locked
CRM 2011 accessing webcontext with outlook plugin RRS feed

  • Question

  • Hi,

    I have found some plugin code on the web that enables me to get the entity ID and the object type code for an entity in a plugin.  The plugin is fired on RetrieveMultiple on activitypointer. The code lets me get the id and object code of the entity that is currently being viewed (which is displaying the activities grid which is firing the plugin).

    This code works fine when using the web interface.  However I need it to also work in the Outlook preview pane and currently it does not.  The activities grid in the Outlook preview pane just says "an error has occurred".  Below is the code that the plugin is using to get the details from the web header.

            internal static Dictionary<string, string> GetHeaderFields(HttpContext webcontext, string objectTypeCode, string objectId)
            {
                Dictionary<string, string> fields = new Dictionary<string, string>();
                string callerentitytype = null;
                string callerentityidstring = null;
                try
                {
                    // Activities Navigation Pane
                    if (new List<string>(webcontext.Request.Params.AllKeys).Contains("oType"))
                    {
                        callerentitytype = webcontext.Request.Params["oType"];
                        callerentityidstring = webcontext.Request.Params["oId"];
                    }
                    // Activities Sub Grid
                    else
                    {
                        string requeststring = webcontext.Request.UrlReferrer.Query;
                        requeststring = requeststring.Substring(1);
    
                        string[] parts = requeststring.Split(new string[] { "=", "&" }, StringSplitOptions.RemoveEmptyEntries);
                        for (int i = 0; i < parts.Length - 1; i++)
                            if (parts[i].ToLower() == "otype" || parts[i].ToLower() == "etc")
                                callerentitytype = parts[i + 1];
                            else if (parts[i].ToLower() == "oid" || parts[i].ToLower() == "id")
                                callerentityidstring = parts[i + 1];
                    }
    
                    fields.Add(objectTypeCode, callerentitytype);
                    fields.Add(objectId, callerentityidstring);
                }
                catch (Exception ex)
                {
                    throw new Plugin.LoggableException(string.Format("Failed to obtain header information; {0}", ex.Message), ex.InnerException);
                }
    
                return fields;
            }

    I'm guessing this is because the web browser is not being used. I need to be able to get this information for when the user is viewing through the Outlook plugin preview pane. Is this possible?

    EDIT:  The reason is that webcontext.Request.UrlReferrer is NULL. Is there anywhere else I can get this info of the 'calling' entity?  (Not the activity sub grid that is triggering the plugin, but the actual parent entity).

    Thanks for any help or direction with this.




    Friday, October 24, 2014 11:03 AM