gpt4 book ai didi

asp.net-mvc - 配置 Magical Unicorn Mvc 错误工具包

转载 作者:行者123 更新时间:2023-12-04 16:46:54 24 4
gpt4 key购买 nike

我正在尝试在我的 MVC4 网站上配置 Magical Unicorn Mvc Error Toolkit (v 2.1.2),但我无法让它工作。这是我的代码:

Web.config

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error/ServerError">
<error statusCode="404" redirect="~/Views/Error/NotFound.cshtml" />
</customErrors>

<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="404" path="~/Error/NotFound" responseMode="ExecuteURL" />
<error statusCode="500" path="~/Error/ServerError" responseMode="ExecuteURL" />
</httpErrors>
<system.webServer>

错误 Controller
public class ErrorController : Controller
{
public ActionResult NotFound()
{
Response.StatusCode = (int)HttpStatusCode.NotFound;
return View();
}

public ActionResult ServerError()
{
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
return View();
}
}

[这些基于此 https://stackoverflow.com/a/7499406/236860邮政]

CustomerErrorHandler.cs (App_Start)
using Microsoft.Web.Infrastructure.DynamicModuleHelper;
using WorldDomination.Web.Mvc;
using CustomErrors.App_Start;

[assembly: WebActivator.PreApplicationStartMethod(typeof(CustomErrorHander), "PreStart")]
namespace CustomErrors.App_Start
{
public static class CustomErrorHander
{
public static void PreStart()
{
// Register the custom error handling module.
DynamicModuleUtility.RegisterModule(typeof (CustomErrorHandlingModule));
}
}
}

我正在使用 IIS Express 在 Visual Studio 2012 中测试此应用程序。如果我尝试导航到不存在的页面,或转到调用异常的操作方法,我将获得默认浏览器错误页面或空白页面。

我还按照 ASP.NET MVC Custom Error Pages with Magical Unicorn 的建议修改了上述代码但这似乎没有任何区别。

任何人都可以指出我正确的方向以使其正常工作。

最佳答案

最后,我无法让 Magical Unicorn Mvc 错误工具包工作。好消息是,我认为我不必这样做!由于我将 MVC 应用程序部署到 IIS 7.5 Web 服务器,因此我可以使用 Web.config 的后面的 system.webServer.httpErrors 部分和自定义错误 Controller 。

Web.Config

<system.web>
<httpRuntime targetFramework="4.5" />
<compilation debug="false" targetFramework="4.5">
<customErrors mode="Off" /> <!-- IMPORTANT -->
...
</system.web>

<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="403" />
<error statusCode="403" responseMode="ExecuteURL" path="/Error/AccessDenied" />
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
<remove statusCode="500" />
<error statusCode="500" responseMode="ExecuteURL" path="/Error/ApplicationError" />
</httpErrors>
...
</system.webServer>

错误 Controller
public class ErrorController : Controller
{
public ActionResult AccessDenied()
{
Response.StatusCode = (int)HttpStatusCode.Forbidden;
Response.TrySkipIisCustomErrors = true;

if (Request.IsAjaxRequest())
{
// return Json friendly response here
}

return View();
}

public ActionResult NotFound()
{
Response.StatusCode = (int)HttpStatusCode.NotFound;
Response.TrySkipIisCustomErrors = true;

if (Request.IsAjaxRequest())
{
// return Json friendly response here
}

return View();
}

public ActionResult ApplicationError()
{
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
Response.TrySkipIisCustomErrors = true;

if (Request.IsAjaxRequest())
{
// return Json friendly response here
}

return View();
}
}
  • 这一切似乎都适用于 IIS Express 和 IIS 7.5。
  • Elmah 在不对默认错误过滤器进行任何更改的情况下记录错误。
  • Fiddler 还建议正确维护正确的 HTTP 状态代码。
  • 关于asp.net-mvc - 配置 Magical Unicorn Mvc 错误工具包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15131982/

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