2012-05-04 5 views
1

mvcアプリケーションはレスポンスステータスコードを401に設定し、場合によってはTrySkipIisCustomErrorsをtrueに設定します。IIS7は、asp.net mvc appがレスポンスに書き込むときにステータスコード401を500に戻します。

私はそれがこのステータスコードを取得していることをログIISから見ることができます

2012-05-04 01:32:42 10.212.98.183 POST /v1.07/session - 80 - 10.24.22.26 curl/7.20.1+(i686-pc-cygwin)+libcurl/7.20.1+OpenSSL/0.9.8r+zlib/1.2.5+libidn/1.18+libssh2/1.2.5 401 0 0 48325 

私がクライアントに受信応答が500であるしかし:

< HTTP/1.1 500 Internal Server Error 
< Content-Type: text/html 
< Server: Microsoft-IIS/7.0 
< Date: Fri, 04 May 2012 02:31:18 GMT 
< Content-Length: 75 
< 
* Connection #0 to host webserver left intact 
* Closing connection #0 
The page cannot be displayed because an internal server error has occurred. 

私は他のさまざまな設定を試してみましたhttpErrorsとcustomErrorsの周りのmvcアプリケーション用のweb.configでは、どちらも違いはありません。

IISで実際の応答を返すように設定するにはどうしたらいいですか?

+0

さらに何かが起こっています。 IISは401 Unauthorizedを返します。新しいWebアプリケーションを作成してテストします。 – RickAndMSFT

+0

ウェブ設定でセクションがあるようです。それを削除した(またはapplicationHost.configで変更を許可した)とすぐに、正しいステータスコードが返されました。 – Matt

答えて

2

多くのグーグル・グーグルの後で、私はapplicationHost.configファイルをhttpErrorsの委任を許可するように変更しました。そして今、私はクライアントに正しい応答を返します。

私が許可する拒否から次のように設定する必要がありました:

<location path="" overrideMode="Allow"> 
    <system.webServer> 
    <httpErrors /> 
    </system.webServer> 
</location> 

が、これは動作しませんでした:

<section name="httpErrors" overrideModeDefault="Allow" /> 

私は<location>タグを使用するために、ファイルの指示に従ってみました。ただし、すべてのサイトではなく、パスでWebサイトを指定しても機能しますが、Webサーバー上のすべてのサイトに対して許可する必要があります。

+0

注:既定では、applicationHost.configのほとんどのIIS 7.0セクションはロックダウンされており、.NET Frameworkのいずれもロックされていません(Machine.configおよびroot web.configのセクショングループのASP.NETセクションを含む)。 – RickAndMSFT