I have a problem with a oneway web method that open a moss site (probably because in a oneway webmethod the context is null)
Is possible to rewrite this code to remove the null reference exception? (without the oneway attribute i don’t have the exception)
[SoapDocumentMethod(OneWay = true)] [WebMethod(Description = 'TestOneWay')] public voidTestOneWay(string webUrl) { using (SPSite site = new SPSite(webUrl)) { .... } }
the exception is:
[2304] Error:Object reference not set to an instance of an object. [2304] w3wp.exe Error: 0 : [2304StackTrace: at System.Web.Hosting.ISAPIWorkerRequestInProc.GetAdditionalServerVar(Int32 index) [2304] at System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable(String name) [2304] at System.Web.HttpRequest.AddServerVariableToCollection(String name) [2304] at System.Web.HttpRequest.FillInServerVariablesCollection() [2304] at System.Web.HttpServerVarsCollection.Populate() [2304] at System.Web.HttpServerVarsCollection.Get(String name) [2304] at System.Collections.Specialized.NameValueCollection.get_Item(String name) [2304] at Microsoft.SharePoint.SPGlobal.CreateSPRequestAndSetIdentity(Boolean bNotGlobalAdminCode, String strUrl, Boolean bNotAddToContext, Byte[] UserToken, String userName, Boolean bIgnoreTokenTimeout, Boolean bAsAnonymous) [2304] at Microsoft.SharePoint.SPRequestManager.GetContextRequest(SPRequestAuthenticationMode authenticationMode) [2304] at Microsoft.SharePoint.Administration.SPFarm.get_RequestNoAuth() [2304] at Microsoft.SharePoint.SPSite.CopyUserToken(SPUserToken userToken) [2304] at Microsoft.SharePoint.SPSite.SPSiteConstructor(SPFarm farm, Guid applicationId, Guid contentDatabaseId, Guid siteId, SPUrlZone zone, Uri requestUri, String serverRelativeUrl, Boolean hostHeaderIsSiteName, Uri redirectUri, Pairing pairing, SPUserToken userToken) [2304] at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken) [2304] at Microsoft.SharePoint.SPSite..ctor(String requestUrl) [2304] at Reply.Moss2EAI.SPHandler.GetAllFlowConfiguration(String webUrl, String flowConList) [2304] at Reply.Moss2EAI.EaiMossIntegration.GetMessagesFromEai(String webUrl, String listName, String applicationName)
i have found a workaround to solve my problem.Create new HttpContext. The question now is: is it the right solution or there are implications that i don’t consider?
the method that i use to change the context is this: