0

更具体地说 - 如何使用[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;
4

1 回答 1

0

单向方法不能有返回值或任何输出参数

但是它们确实有参数,不是吗?

当你调用webservice方法时,你不能从featurereceiver传入当前站点的url,然后 在web service方法中使用(SPSite site = new SPSite(urlPassedAsParameter)) 吗?

FeatureActivated 覆盖中的 SPFeatureReceiverProperties 将当前 SPWeb 或 SPSite 作为 SPFeatureReceiverProperties.Parent。

于 2009-06-11T09:42:20.857 回答