加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 抛出一个404像StackOverflow的,没有重定向,当使

发布时间:2020-12-15 22:43:40 所属栏目:asp.Net 来源:网络整理
导读:我发现在这里发布了另一个问题,提供了我的问题的第一部分的解决方案,即如何在ASP.NET MVC中生成404页面,而不重定向到另一个页面(因此最初请求的URL保留在地址栏中). ASP.NET MVC – How to throw a 404 page similar to that on StackOverflow protected voi
我发现在这里发布了另一个问题,提供了我的问题的第一部分的解决方案,即如何在ASP.NET MVC中生成404页面,而不重定向到另一个页面(因此最初请求的URL保留在地址栏中).

ASP.NET MVC – How to throw a 404 page similar to that on StackOverflow

protected void Application_Error(object sender,EventArgs e)
    {
        var exception = Server.GetLastError();

        Response.Clear();
        var httpException = exception as HttpException;
        var routeData = new RouteData();
        routeData.Values.Add("controller","Error");

        if (httpException != null)
        {
            routeData.Values.Add("action",httpException.GetHttpCode() == 404 ? "NotFound" : "Unknown");

            // clear the error,otherwise,we will always get the default error page.
            Server.ClearError();

            // call the controller with the route
            IController errorController = new ErrorController();
            errorController.Execute(new RequestContext(new HttpContextWrapper(Context),routeData));

        }
    }

如果我不使用IOCControllerFactory,404的一些事情对我来说可以正常工作,但是一旦我使用工厂,global.asax中的错误代码就不会被使用,而是得到以下错误:

The IControllerFactory ‘MyNamespace.IOCControllerFactory’ did not
return a controller for the name ‘blah’.

如何解决这个问题,而不是摆脱我的控制器,并为每个控制器创建一个无参数的构造函数?

解决方法

ASP.NET can do这个OOTB(从3.5开始).
在< CustomErrors>元素add:redirectMode = ResponseRewrite

更新

我发错了代码.它是处理这个的IIS 7.

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
         <remove statusCode="404" />
         <error statusCode="404" path="/home/notfound" responseMode="ExecuteURL" />
     </httpErrors>
<system.webServer>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读