より具体的には、 [SoapDocumentMethod(OneWay=true)]を使用して Web サービスで SPContext を参照するにはどうすればよいですか?
サイトの作成時にジョブを実行する必要がある機能を作成しています。ジョブが完了するまでに約 4 分かかります。そこで、機能がアクティブ化されたときに呼び出すことができる Web サービスを作成しました。これは機能しますが、非同期で実行する必要があります。SoapDocumentMethod の OneWay プロパティが見つかりました。これはうまく機能しますが、SPContext は現在 NULL です。
_vti_bin 仮想ディレクトリに Web サービスがあるため、各 Windows Sharepoint Services サイトで利用できます。SPContext.Current.Web を使用してサイトを取得し、長時間実行する操作を実行していました。すぐに SOAP 応答を返し、プロセスを実行させることで、ただ起動して忘れたかったのです。
現在の SPContext を取得するにはどうすればよいですか? 私は自分のWebサービスでこれを行うことができました:
SPWeb mySite = SPContext.Current.Web;
Web サービスに[SoapDocumentMethod(OneWay=true)]属性を適用すると 、同じコンテキストを取得できますか?
または、URL から SPWeb を再作成する必要がありますか?
これは次のスレッドに似ています: webservice oneway and new SPSite(myUrl)
更新: 次の 2 つの方法を試しましたが、うまくいきませんでした。
SPWeb targetSite = SPControl.GetContextWeb(this.Context);
SPWeb targetSite2 = SPContext.GetContext(this.Context).Web;