gpt4 book ai didi

asp.net-mvc - 如何在 json 发布期间发生异常时阻止 asp.net mvc 重定向到错误 Controller

转载 作者:行者123 更新时间:2023-12-01 05:32:02 24 4
gpt4 key购买 nike

当它是一个 json 帖子时,你如何阻止 asp.net mvc 重定向到错误页面?当发生异常时,它不断尝试重定向到我的配置文件中的错误路径,我需要它返回异常......它甚至没有尝试将它们引导到正确的路径 - 它一直在寻找错误。主目录下的 cshtml View ( View 的主文件夹,就好像它正在尝试使用我的主 Controller 一样),当它们都在错误文件夹/ Controller 设置下时,我的配置文件中清楚地概述了这一点:

<customErrors mode="On" defaultRedirect="~/Error/Error">
<error statusCode="404" redirect="~/Error/NotFound" />
<error statusCode="403" redirect="~/Error/Forbidden" />
</customErrors>

谢谢!

最佳答案

您可以通过在 Global.asax 中注册 Application_Error 事件,然后以这种方式将其重定向到带有数据的错误 Controller ,或者您可以根据错误代码执行您想要的任何功能

protected void Application_Error()
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Error";
routeData.Values["action"] = "oops";
routeData.Values["exception"] = exception;
Response.StatusCode = 500;
if (httpException != null)
{
Response.StatusCode = httpException.GetHttpCode();
switch (Response.StatusCode)
{
case 403:
routeData.Values["action"] = "NoAccess";
break;
case 404:
routeData.Values["action"] = "NotFound";
break;
}
}

IController errorsController = new ErrorController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}

然后使用操作 oops/NotAccess/NotFound 制作一个 Controller ,例如
public ActionResult oops(Exception exception)
{
//return Content("General failure", "text/plain");

// return View();

}

public ActionResult NotFound()
{
// return Content("Not found", "text/plain");
// return View("oops");
}

public ActionResult NoAccess()
{
//return Content("Forbidden", "text/plain");
//return View("oops");
}

并用适当的信息返回您自己的 View

关于asp.net-mvc - 如何在 json 发布期间发生异常时阻止 asp.net mvc 重定向到错误 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10655928/

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