0

ユーザーに表示したいカスタム エラー メッセージがいくつかあります。したがって、間違ったユーザー名とパスワードの組み合わせを入力してくださいと言われたら、コードでこれを実行する可能性があります。

Response.StatusCode = 400;
return Json("Invalid username or password");

これは、私のローカル マシンでは問題なく動作します。私はWebホストにデプロイしてきましたが、これらのメッセージはサーバーによって上書きされているため、すべて次のようになります。

内部サーバーエラーが発生したため、ページを表示できません。

サーバーは明らかに、何がうまくいかなかったのかに関する機密情報を明らかにしないように保護しようとしていますが、実際には、このエラーを通過させてユーザーに表示させたいと思っています (実際には、コードによって解析されてから表示されます)。

これを機能させるために web.config にできることがあると思いますが、これまでに試したことはすべて機能していません。何か案は?

私が今持っている web.config の関連セクション:

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="PassThrough">
    </httpErrors>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
    etc.
4

3 に答える 3

2

デフォルトでは、一部の HTTP ステータス コードは IIS によって隠され、IIS に置き換えられます。ただし、次の行を使用して構成できます。

  <system.webServer>
    <httpErrors errorMode="Detailed"/>

これにより、応答でカスタム メッセージを渡し、AJAX 呼び出しが完了したときにクライアント側でそれを読み取ることができます。

于 2013-03-23T05:14:05.080 に答える
0

これに対する解決策は、web.config から < httpErrors > 要素を完全に削除することでした。http://www.iis.net/configreference/system.webserver/httperrorsに見られるようにデフォルトのオプションに設定しても機能しなかったので、なぜそれを削除しても機能するのか少し当惑しています。

<system.webServer>
    **Remove <httpErrors> !**
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
于 2013-03-23T15:31:54.007 に答える
0

各 HTTP エラー コードを処理するには、web.config ファイルに特定のマッピングを追加する必要があります。

 <customErrors mode="On/RemoteOnly" >
      <error statusCode="400" redirect="My400View" />
      <error statusCode="404" redirect="My404iew" />
      <error statusCode="500" redirect="My500View" />
    </customErrors>
于 2013-03-22T23:21:09.183 に答える