2012-01-04 8 views
2

私はこのSO Questionで詳述されているソリューションを使用しています。私は前に他のサイトでこれを使っていましたが、うまくいきました。それは私の開発ボックスで動作します。しかし、Windows VPSに公開すると、エラーは標準のIISエラーページを返します。MVC3カスタムエラーページはサーバではなくdevで動作します

以前はWebサーバーを管理していませんでしたが、私が設定したカスタムエラーを返さない理由を調べるためにどの設定を確認する必要があるのか​​よくわかりません。私は、アプリケーションのオフとオン、ルートサイトに設定されたデフォルトのページだけでなく、 '/'を設定する.netのエラーページを試してみました。

また、エラーページ(7.5のiisの下)をカスタムと詳細に設定しようとしました。

これらのどれも、返されるエラーページに影響しないようです。私はここで間違って何をしていますか?

+0

に次の行を追加?それは私たちにエラーを伝えているもののアイデアを与えるでしょう。そこから、次に試す設定を見つけ出すことができました。 –

+0

標準のiisエラーページです。ここで私がgoogleで見つけた例を示します:http://www.west-wind.com/Weblog/images/200901/WindowsLiveWriter/Response.TrySkipIisCustomErrors_9A81/ServerError500_5436e95f-b1b5-46eb-80ab-0769a875117d.png – Tyrsius

答えて

1

私は同様の問題を抱えて覚えていると私はあなたがどのようなエラーページを見ているコード

protected void Application_Error() 
{ 
var exc = Server.GetLastError(); 
var httpExc = exc as HttpException; 
Response.Clear(); 
Server.ClearError(); 
var routeData = new RouteData(); 
routeData.Values["controller"] = "Error"; 
routeData.Values["action"] = "General"; 
routeData.Values["exception"] = exc; 
Response.StatusCode = 500; 
if (httpExc != null) 
{ 
    Response.StatusCode = httpExc.GetHttpCode(); 
    routeData.Values["action"] = "Http404"; 
    routeData.Values["exception"] = httpExc; 
} 
Response.TrySkipIisCustomErrors = true; //this fixed it 
IController errorsController = new WWS_Website.Controllers.ErrorController(); 
var rc = new RequestContext(new HttpContextWrapper(Context), routeData); 
errorsController.Execute(rc); 

} 
+0

それは、ありがとう! – Tyrsius

+0

これは、さまざまなホストのサーバーでの展開に関連しています。http://stackoverflow.com/q/1706934/964043 – dmarietta

0

web.configファイルのsystem.webServerセクションのhttpErrorsセクションを使用して、標準のIISエラーページを置き換えることができます。これは、system.webのcustomErrorsセクションに追加されています。

<system.webServer> 
    ... 
    <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL"> 
     <remove statusCode="400" subStatusCode="-1" /> 
     <error statusCode="400" prefixLanguageFilePath="" 
      path="/errors/400" responseMode="ExecuteURL" /> 
     <remove statusCode="404" subStatusCode="13" /> 
     <error statusCode="404" subStatusCode="13" prefixLanguageFilePath="" 
      path="/errors/file-upload-too-large" responseMode="Redirect" /> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" 
      path="/errors/404" responseMode="ExecuteURL" /> 
     <remove statusCode="403" subStatusCode="-1" /> 
     <error statusCode="403" prefixLanguageFilePath="" 
      path="/errors/403" responseMode="ExecuteURL" /> 
    </httpErrors> 
+0

これはと互換性がありません私が使用している解決策。リンクされたSOの質問 – Tyrsius

+0

を参照してください。これはあなたのdevマシンでは動作しますが、IISでは動作しません。開発者は、IIS Expressでテストしていますか?カッシーニ? – danludwig

+0

私はcassiniを使用しています – Tyrsius

関連する問題