2

MVC 3 Webアプリケーションでhttpカスタムエラーページを設定しようとしています。私は私のweb.configファイルに以下を追加しました:httpErrorsがMVC 3の正しいページにリダイレクトされない

<httpErrors errorMode="Custom" defaultResponseMode="ExecuteUrl" defaultPath="/Error/404"> 
    <clear /> 
    <error statusCode="500" path="/Error/404" 
</httpErrors> 

500エラーが、私は、これはユーザーmy.domainname.com/Error/404をリダイレクトすることが期待リクエストに応じて発生した場合。

私はエラーという1つのアクションを含むエラーコントローラを持っています。私はこのアクションに404の要求をマップしました。

私は、次のメッセージで空白のページを受け取るウェブサイト上(クロム開発ツールのネットワークタブによって検証)500エラーを強制:

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

web.configからhttpErrorsセクションを削除すると、実際の例外メッセージが表示されます。したがって、web.configのhttpErrorsセクションが機能している必要があります。正しく設定する方法がわかりません。ここで

私はなぜ選んだとしている属性のリストです:

errorMode =「カスタム」:私は、カスタムエラーページが表示され、それだけでローカルにそれを変更する前に動作していることを確認できるようにするために。

defaultResponseMode = "ExecuteUrl":これは、サーバーの相対URLをパスとして指定できるようにする必要があります。

defaultPath = "/ Error/404":指定しないと、要求したい相対URLです。

編集:

サイトがIIS 7.5で実行されていることを追加する必要があります。また、このタグはIIS 6で動作するように設計されており、IIS 7以上で使用する必要があるため、このタグを使用しないことをお勧めします。

答えて

0

代わりにweb.config(system.web内)のcustomErrorsセクションを使用してみてください。

http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx

例えば

<customErrors mode="On"> 
     <error statusCode="404" redirect="Error/404" /> 
     <error statusCode="500" redirect="Error/500" /> 
    </customErrors> 
+0

申し訳ありません。これはcustomErrorsセクションで動作しますが、これは理想的なソリューションではなく、IIS 6用に設計された従来のオプションです。 – Aesir

+0

defaultResponseMode = "リダイレクト"を設定し、絶対パスへのパスを設定するのは機能しますか?私はこれが正確にあなたが望むものではないことを知っています。なぜなら、相対パスで作業する方が良いが、問題のデバッグに役立つからです。 –

+0

このケースでは、サブドメインが変わる可能性があり、ユーザーが変更できるように開いているため、絶対パスを設定できません。したがって、my.domainname.comはtest.domainname.comなどになる可能性があります。そのため、パスは相対的なものにする必要があります。 – Aesir

0

Controller/Action/Idのようになります。あなたの場合は、アクションがありません。以下の例を確認し、あなたの行動方法に応じて変更してください。

<system.web> 
    <customErrors mode="On" defaultRedirect="/Error/Index/" > 
     <error statusCode="401" redirect="/Error/NoAccess/" /> 
     <error statusCode="404" redirect="/Error/NotFound/" /> 
    </customErrors> 
    .... 
</system.web> 
+0

私のコントローラはエラーで、このコントローラの私のアクションもエラーですが、このアクションには404がマップされています。したがって、Error/404が動作し、このリクエストを直接行った場合:my.domainname.com/Error/404正しいページが表示されます。 CustomErrorsセクションをソリューションとして使用しないことを指定するために質問を更新しました。乾杯! – Aesir

+0

こちらをご覧ください。それはあなたを助けるかもしれないhttp://stackoverflow.com/questions/3554844/asp-net-mvc-404-handling-and-iis7-httperrors – Kaf

関連する問題