2

基本認証用のIISモジュールの開発中に、問題が発生しました。モジュールはページを閲覧するときに正常に機能していますが、Webサービスを呼び出すと、リクエストがモジュールに到達せず、一部の中間モジュールがリクエストを制御しているようです。

fiddlerを使用してContent-type、httpリクエストヘッダーがapplication/json中央のモジュール/ハンドラーでトリガーされるように設定されていることを確認しました。したがって、次のリクエストは機能しません。

WWW-Authenticate正常に動作している場合、サーバーは、応答としてヘッダーを設定することにより、クライアントにユーザー資格情報を送信するように要求する必要があります

GET /WebServices/service.asmx/someMethod?param=test HTTP/1.1
Host: localhost
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Content-Type: application/json

asdfasdf
asdfasdfasdf

応答:応答のjsonerrorヘッダーに注意してください

HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
jsonerror: true
X-Powered-By: ASP.NET
Date: Mon, 11 Mar 2013 23:49:02 GMT
Content-Length: 105

{"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.In
validOperationException"}

これがうまく機能する場所:ないことに注意してくださいcontent-type

GET /WebServices/service.asmx/someMethod?param=test HTTP/1.1
Host: localhost
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

asdfasdf
asdfasdfasdf

正しい応答は次のとおりです。応答のヘッダーに注意してくださいWWW-Authenticate

HTTP/1.1 401 Unauthorized
Location: http://localhost/WebServices/service.asmx/someMethod?param=test
Server: Microsoft-IIS/7.5
WWW-Authenticate: Basic
X-Powered-By: ASP.NET
Date: Mon, 11 Mar 2013 23:59:48 GMT
Content-Length: 0
4

1 に答える 1

1

その中間モジュールはScriptModuleで、構成に3.5バージョンと4.0バージョンの両方が追加されています。dotpeekでそれらを調べたところ、スクリプトモジュールがリクエストの存在をチェックcontent-typeしてapplication/jsonから、リクエストをRESTリクエストまたはWebサービス呼び出しとして処理しようとしていることがわかりました。

それらを削除することにより、特別なことは何も起こりませんでした。スクリプトマネージャまたはMicrosoft固有のAJAXサービスを使用する場合に使用されると思います。詳細については、 ASP.NetAjaxプログラミングの秘訣をご覧ください。

于 2013-03-12T03:48:28.003 に答える