更具体地说 - 如何使用[SoapDocumentMethod(OneWay=true)]在 Web 服务中引用 SPContext ?
我们正在创建一个在创建站点时需要运行作业的功能。该作业大约需要 4 分钟才能完成。因此,我们创建了一个 Web 服务,我们可以在激活该功能时调用它。这可行,但我们希望它现在异步运行。我们找到了 SoapDocumentMethod 的 OneWay 属性,它可以很好地工作,但 SPContext 现在为 NULL。
我们的 Web 服务位于 _vti_bin 虚拟目录中,因此它在每个 Windows Sharepoint 服务站点中都可用。我正在使用 SPContext.Current.Web 来获取站点并执行长时间运行的操作。我想通过立即返回一个肥皂响应并让该过程运行来触发并忘记它。
如何获取当前的 SPContext?我曾经能够在我的网络服务中做到这一点:
SPWeb mySite = SPContext.Current.Web;
当我将[SoapDocumentMethod(OneWay=true)]属性应用于我的 Web 服务时,我可以获得相同的上下文吗?
或者我必须从 url 重新创建 SPWeb?
这类似于此线程:webservice oneway 和 new SPSite(myUrl)
更新:我尝试了这两种方法,但没有奏效:
SPWeb targetSite = SPControl.GetContextWeb(this.Context);
SPWeb targetSite2 = SPContext.GetContext(this.Context).Web;