WebサービスのSPSiteが401エラーをスローする
-
05-07-2019 - |
質問
次のコードがあります:
using ( var site = new SPSite( myUrl ) ) {
using ( var web = site.AllWebs[0] ) {
// read-only operations
}
}
<!> quot; myUrl <!> quot; WSS 3.0のトップドメインURLです。認証はWindowsに設定されます。 <!> quot; external_app_user <!> quotの下のコマンドラインからこのコードを実行すると、アカウント、すべてが大丈夫です。ただし、このコードをWebサービス(WSS Webアプリケーションの外部)から実行すると、結果はhttp response <!> quot; 401 UNAUTHORIZED <!> quot;になります。 SOAP応答の代わりに。このコードは<!> quot; try-catch <!> quot;にあるため、奇妙です。ブロックし、例外がスローされた場合は、SOAP応答で独自のエラーメッセージを返しました。
コードはWSSと同じマシンで実行されています。
Webサービスが実行されているマシンでwebbroserからWebサービスを実行すると、クラシックWindowsログインフォームが表示されます。別のコンピューターのwebbrowserからWebサービスを実行すると、<!> quot; 401 UNAUTHORIZED <!> quot; http応答。
Webサービスは正しいアカウントで実行されています。このアカウントは、WSS(sharepoint Webサイトでテスト済み)にアクセスできます。 <!> quot; System.Security.Principal.WindowsIdentity.GetCurrent()。Name <!> quot;を取得しようとすると、正しいユーザー名が返されます。
web.configで<!> quot; <!> lt; identity impersonate = <!> quot; true <!> quot;が設定されます。 userName = <!> quot; _my_username _ <!> quot; password = <!> quot; _my_password _ <!> quot; / <!> gt;。
誰が間違っているのか知っていますか?
解決 3
他のヒント
401をキャッチできない理由は、SharePointにこの例外のカスタム処理があるためです。次のスレッドを参照してください: SharePoint Access拒否エラーをキャッチできません(無効にする方法の提案を含む)。
匿名認証とWindows認証の両方が許可されている場合、IISでチェックインできます。その後、WindowsのIDを読み取る代わりに、匿名として許可される可能性があります。これは、後で不正につながります。