gpt4 book ai didi

asp.net-mvc - IIS显示服务器错误而不是自定义错误

转载 作者:行者123 更新时间:2023-12-04 13:38:53 24 4
gpt4 key购买 nike

我正在使用MVC 5,并且正在使用自定义 View 处理错误(例如(404、403 ..等))
它在我的本地IIS上运行良好,但是当我在登台服务器上发布时,它会显示有关这些错误代码的IIS服务器错误消息。

显示此消息:

代替:

我已将web.config修改为<customErrors mode="Off" />
Global.asax

        if ((Context.Server.GetLastError() is UnauthorizedAccessException))
{
log.LogError(Context.Server.GetLastError().Message, Context.Server.GetLastError());
customErrorPage = @"~/Error/?id=403"; //security
}
else if ((Context.Server.GetLastError() is HttpException) && (((HttpException)Context.Server.GetLastError()).GetHttpCode() == 404))
{
//** Handle 404 error and response code
log.LogError("404", Context.Server.GetLastError());
customErrorPage = @"~/Error/?id=404";
}
else
{
log.LogError(Context.Server.GetLastError().Message, Context.Server.GetLastError());
customErrorPage = @"~/Error";
}

if (ConfigurationHelper.Common.ShowCustomErrorPage)
{
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
Response.Redirect(urlHelper.Content(customErrorPage), false);
Server.ClearError();
}

错误 Controller :
    public ActionResult Index(string id)
{
if (!string.IsNullOrEmpty(id) && id.Equals("404"))
{
Response.StatusCode = 404;
return !Request.IsAjaxRequest() ? (ActionResult)View("404") : PartialView("404");
}
if (!string.IsNullOrEmpty(id) && id.ToLower().Equals("403"))
{
Response.StatusCode = 403;
return !Request.IsAjaxRequest() ? (ActionResult)View("Security") : PartialView("Security");
}
return !Request.IsAjaxRequest() ? (ActionResult)View("Index") : PartialView("Index");
}

我应该怎么做才能显示我的自定义错误消息?

最佳答案

只需添加以下web.config配置即可通过IIS默认错误处理行为

<configuration>
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
</configuration>

关于asp.net-mvc - IIS显示服务器错误而不是自定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26447804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com