更具体地说 - 如何使用 [SoapDocumentMethod(OneWay = true)] 在Web服务中引用SPContext?
我们正在创建一个在创建网站时需要运行作业的功能。这项工作大约需要4分钟才能完成。因此,我们制作了一个Web服务,我们可以在激活该功能时调用它。这有效,但我们希望它现在异步运行。我们已经找到了SoapDocumentMethod的OneWay属性,但它的工作效果非常好,但SPContext现在为NULL。
我们在_vti_bin虚拟目录中有我们的Web服务,因此它可以在每个Windows Sharepoint Services站点中使用。我正在使用SPContext.Current.Web来获取站点并执行长时间运行的操作。我想通过立即返回肥皂响应并让流程运行来解雇并忘记它。
如何获取当前的SPContext?我曾经能够在我的网络服务中做到这一点:
SPWeb mySite = SPContext.Current.Web;
当我将 [SoapDocumentMethod(OneWay = true)] 属性应用于我的网络服务时,是否可以获得相同的上下文?
或者我必须从网址重新创建SPWeb吗?
这与此主题类似:webservice oneway and new SPSite(myUrl)
更新:我尝试了这两种方法,但它们不起作用:
SPWeb targetSite = SPControl.GetContextWeb(this.Context);
SPWeb targetSite2 = SPContext.GetContext(this.Context).Web;
答案 0 :(得分:0)
单向方法不能有返回值或任何输出参数
但他们确实有参数,不是吗?
当您调用webservice方法时,无法从featurereceiver传入当前站点的url然后执行 使用(SPSite site = new SPSite(urlPassedAsParameter)) 在Web服务方法?
FeatureActivated覆盖中的SPFeatureReceiverProperties将当前SPWeb或SPSite作为SPFeatureReceiverProperties.Parent。