• 彻底解决ASP.NET MVC 3 404错误码返回302的问题


    转自:http://blog.csdn.net/mycloudke/article/details/9746333

    404状态码:,意味着当在页面上显示用户点击不存在,提高用户体验度,搜索引擎会放弃这个页面索引。

    302状态码:搜索引擎将继续指数,这将导致大量不同的链接指向同一个页面,它将影响搜索引擎对站点的信任度。

    http://www.cloudke.com.cn/ 后面随便带些参数或者不存在的文件名,然后跳转到自定义错误页,但返回的状态是302。

    解决办法:

    第一步:

    将web.config的customErrors设为off

    [csharp] view plaincopy
     
    1. <customErrors mode="Off">  
    2. </customErrors>  


    然后自己处理定制错误信息,在Global.asax.cs中添加如下的代码:

    [csharp] view plaincopy
     
    1. protected void Application_Error(Object sender, EventArgs e)  
    2.         {  
    3.             if (!Request.IsLocal)  //如果是在本地测试,则去掉!
    4.             {  
    5.                 Exception lastError = Server.GetLastError();  
    6.                 if (lastError != null)  
    7.                 {  
    8.                     Response.StatusCode = 404;  
    9.                     Response.WriteFile("~/Content/HtmlTemplate/NotFound.htm");  //输出NotFound.htm页面的内容。可以去掉所有的html标签,直接输入“报错
    10.                     Server.ClearError();  
    11.                 }  
    12.             }  
    13.         }  


    ~/Content/HtmlTemplate/NotFound.htm文件只能为静态文件,这样就不走asp.net的mvc路由器了。

    这样配制好后,发现还是有问题,本地访问404可以转到自定义页,但远程访问就不行了,还需要配制一下iis

    打开错误页,编辑404页

    这个文件路径就是自定义错误页404。

    好了,再测试一下: 

    测试结果正常了。

  • 相关阅读:
    苦逼也聊模式--(0)--开篇
    发现无力吐槽
    JS函数调用
    初步使用nodejs(一)
    测试一下
    达摩流浪者
    Revit:二开使用Sqlite保存本地数据,并配合EF6等ORM框架
    Revity:查找并修改类型参数和实例参数
    复习一下UML
    Revit:ElementFilter过滤器基类
  • 原文地址:https://www.cnblogs.com/allenhua/p/3793422.html
Copyright © 2020-2023  润新知