Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC3自定义错误页在dev中工作,而不是在服务器上_Asp.net Mvc 3_Iis_Windows Server 2008 - Fatal编程技术网

Asp.net mvc 3 MVC3自定义错误页在dev中工作,而不是在服务器上

Asp.net mvc 3 MVC3自定义错误页在dev中工作,而不是在服务器上,asp.net-mvc-3,iis,windows-server-2008,Asp.net Mvc 3,Iis,Windows Server 2008,我正在使用本文中详述的解决方案。我以前在其他网站上使用过它,效果很好,在我的dev box上也可以。但是,当我发布到我们的Windows VPS时,错误返回标准IIS错误页面 我以前从未管理过web服务器,我不确定需要检查哪些设置才能找出它为什么不返回我设置的自定义错误。我已尝试将应用程序的.net错误页面设置为关闭和打开,默认页面设置为根站点,并且仅设置为“/” 我还尝试将错误页面(在7.5的iis下)设置为custom和detailed 这些似乎对返回的错误页面没有任何影响。我做错了什么?您

我正在使用本文中详述的解决方案。我以前在其他网站上使用过它,效果很好,在我的dev box上也可以。但是,当我发布到我们的Windows VPS时,错误返回标准IIS错误页面

我以前从未管理过web服务器,我不确定需要检查哪些设置才能找出它为什么不返回我设置的自定义错误。我已尝试将应用程序的.net错误页面设置为关闭和打开,默认页面设置为根站点,并且仅设置为“/”

我还尝试将错误页面(在7.5的iis下)设置为custom和detailed


这些似乎对返回的错误页面没有任何影响。我做错了什么?

您可以使用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>

...

我记得有类似的问题,我在代码中添加了这一行

 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);

 }

你看到了什么错误页面?这将使我们了解是什么在处理错误。从中可以确定下一步要尝试的设置。这是标准iis错误页。下面是我在谷歌上找到的一个例子:这与我正在使用的解决方案不兼容。请参阅链接的问题,您说这在您的开发机器上有效,但在IIS中无效。在dev中,您是否正在使用iisexpress进行测试?或者Cassini?我还发现这与在不同主机的服务器上部署相关: