質問

これがシナリオです:

  • SharePoint 2010に展開されたカスタムWCFサービス
  • サイトはクレームベースの認証(FBA、NTLM)を使用しています
  • .SVCは、HiveでISAPIに展開されます
  • サービスは、カスタムサービスファクトリを使用して構成されています
  • Ajaxを使用してブラウザからサービスが呼び出されます
  • 私はサービスをうまく打つことができます。サービスはアップしてリクエストを受け入れています

問題は次のとおりです。Spcontext.currentです いつも ヌル。 SPContextを「偽造」するか、明らかにSPSiteとSPWEBを手動で作成するさまざまな手法があることは知っていますが、 したほうがいい spcontext.currentは、カスタムWCFサービスでnullになります クレームベースの認証を使用する場合?それとも、どこかで一歩を踏み出しましたか?

クラシックモード認証でこの問題に遭遇したことがないので、これがWCF+SharePoint+クレームベースの認証に特有のものであるかどうか、そして可能性のある回避策があるかどうか疑問に思っています。

洞察をありがとう!

- チャック

役に立ちましたか?

解決

arrrrrgh!良い一日のためにこれをいじった後、ついにそれを理解しました。

他の誰かが同じ問題に陥った場合に備えて、これをここに残したいと思います。

JavaScriptのエンドポイントを登録すると、サービスの完全なURLを使用します。

したがって、私のサイトのルートが次の場合:

http://mydomain.com/sites/site1

登録してください:

http://mydomain.com/sites/site1/_vti_bin/myservicedir/myservice.svc/js

これはすべて良いです。 JavaScriptスタブを取得するためにリクエストが行われたとき、私はフィドラーでリクエストが次のことを見ることができます。

/sites/site1/_vti_bin/myservicedir/myservice.svc/js

しかし、私はちょうど今、私は今、私がサービス方法に電話をかけるとき、URLは次のように切り刻まれていることに気づきました(最終的に、何時間もそれを見つめた後)。

/_vti_bin/myservicedir/myservice.svc/MethodName

したがって私の SPContext いつも null URLで指定されたサイトコンテキストがないためです。

SharePointのJavaScriptスタブを見ると、 set_path() 刻んだURLを使用していました。呼び出して修正するのに十分なシンプル set_path() 再び正しいパスで。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top