IIS 错误页里面可以配置

解决方案 »

  1.   

    在web.config中可以配置的原因就是 看谁先做出判断你想办法让你的判断优先
      

  2.   

    IIS直接配置的话会有几点不合:
    1.它会直接跳转到404页面,并不留在当前网址。
    2.好像它是会跟一个errorpath什么的,实在是压抑。
    3.其实我有做过iis的404,遇到不少问题,百度了不少资料并按步骤执行,也没解决。
    所以我觉得最好还是从程序本身入手好。
    我现在的问题就是上面所说的:为什么有部分能捕获到,而部分依然显示.Net自身的错误提示?
      

  3.   

    别说个大概,很难理解并找出解决办法,那么问题就是:为什么有的(aspx,php,html可能还有其它)我的判断先,有的(目录式,htm可能还有其它)却后了?
      

  4.   

    可以自定义错误页这不是代码错误,根本没有走你的代码是访问IIS的时候,IIS找不到你要访问的页面
      

  5.   


    我知道,所以我问这是怎么了,那些aspx或html后缀的也没有存在的页面,当然是iis没找到,它就显示了我的处理结果,话说iis没找到不就是404了吗?
    自定义错误页,我已经在上面说了会产生某些问题,并不能自己去处理,只是跳转到那个页面而已
      

  6.   

    应该是你没配置htm或者asp页面由iis处理导致,而aspx默认是由iis处理,html估计你配置成了由iis处理
      

  7.   

    别说个大概,很难理解并找出解决办法,那么问题就是:为什么有的(aspx,php,html可能还有其它)我的判断先,有的(目录式,htm可能还有其它)却后了?http://blog.csdn.net/liu_111111/article/details/8439835
      

  8.   

    我也是这样想的,html我已经处理映射了,因为需要伪静态,但还是有两个可疑的地方:
    1.假如iis默认文档是index.aspx,我随便输入目录名ab,按道理说,应该是访问了/ab/index.aspx才对,但它依然显示IIS(上面一直说是.Net的,其实是IIS的,改正)自身错误提示。
    2.一些网站,无论你输入什么,只要是它真的不存在的,它就会显示网站自己的自定义404页面,并且保持当前地址不变,并不是跳转到404(这段其实就是我想实现的,前提是所有这些错误都需要捕获到),我想,这个网站不可能为无数个扩展后缀都作解析到iis上吧,是不是有将所有访问都映射到iis上的设置(不过由此诞生另一个问题:既然IIS都显示自身错误了,想必是iis它接受并尝试处理了吧)?
    下面附上一个网站的测试结果,我无论输入什么(当然前提是服务器上真的不存在的资源),都是保持当前URL并且显示404(这个真的不是AD,有空看下动画什么的,释放压力):
    1.目录式2.随便其它后缀式
      

  9.   

    别说个大概,很难理解并找出解决办法,那么问题就是:为什么有的(aspx,php,html可能还有其它)我的判断先,有的(目录式,htm可能还有其它)却后了?http://blog.csdn.net/liu_111111/article/details/8439835
    我也有用继承IHttpHandler的办法来做(就是那种处理url伪静态的),但结果依然是和我上面一样的——不行。
    这里也有个解决方案:http://helephant.com/2009/02/11/improving-the-way-aspnet-handles-404-requests/
    但结果都是,不存在的目录或一些除aspx,html,php外的扩展都是显示:
      

  10.   

    保持地址不变,然后显示错误又不困难的,在page_error时间里面加载错误模板,然后response出来就可以了啊……
      

  11.   

    路由?是MVC里面的吗?不了解呀,不过现在不能用MVC,因为项目现在都是传统的WEB
      

  12.   

    问题是,page_error是页面错误吧,别人输入一个不存在的地址或目录,这个page_error到底写在哪的?无页面处理吧
      

  13.   

    路由?是MVC里面的吗?不了解呀,不过现在不能用MVC,因为项目现在都是传统的WEB
    webform4还是4.5开始也支持route了不存在的地址肯定要route策略才能指向
      

  14.   

    放到iis上 要写httpmodule 和globle里那种还是有区别的 必须要写那种在webconfig里注册的httpmodule
      

  15.   

    是有那么点区别,但我两种都用到了,两种都没达到效果呀
    我上面给的链接,里面有demo,它就是写在web.config里面的httpmodule,它也不行呢不存在的地址肯定要route策略才能指向 ??那现在这个,不用route的话还有什么解决办法嘛,就是在哪怎么样才能拦截到这个404?
      

  16.   

    需要进行iis配置。
    对于html和图片等静态文件,需要配置“应用程序扩展”,对于目录,需要配置“通配符应用程序映射”。
    至于出现错误提示,浏览器url不变的需求,可以在web.config里,将customErrors节点的redirectMode属性设置为ResponseRewrite就可以了。
      

  17.   

    那到底如何设置这个?再说了,上面说了,如果需要单独去设置每种扩展,那上面的动漫网是做不到的吧,不存在的扩展想多少有多少呀。
    @娃都会打酱油了 不对呀,我的是IIS7 默认asp是可以了的,比如访问一个正确的asp地址,它可以正确显示,错误的,就iis的404了,并没有拦截到。
      

  18.   

    若是aspx,html的,就能拦截到了
    上面说php可以,但试了却是这样目录则是这样:
      

  19.   

    我在IIS里面添加了这个映射后对于其它名称的扩展,有处理信息了,但并不对呀,例如我输入了不存在的资源,然后显示是500错误,应该是404的吧去掉这个映射后IIS是显示404的
      

  20.   

    1、映射到aspnet_isapi.dll的文件,出错时由.net负责处理,可以设置web.config中的customErrors节点或者在Application_Error中实现
    2、没有映射的文件,出错时由IIS负责处理,可以在IIS自定义错误中进行设置以上两点为基础知识,下面来分析你的问题1、"我故意输入了错误的参数"
    你故意输错参数的那个页面肯定是映射到aspnet_isapi.dll上的,所以能触发Application_Error2、但我输入了一个不存在的目录后,并不执行上面的语句,而是直接显示IIS本身的错误了
    映射到aspnet_isapi.dl都是文件,目录是不能映射的,所以不会触发Application_Error,而直接显示IIS本身的错误3、如何实现"无论你输入什么,只要是它真的不存在的,它就会显示网站自己的自定义404页面"
    这个问题还不简单吗,至少可以有以下几种方式来实现吧
    1>配置IIS的自定义错误,将404错误页面指向a.aspx,在a.aspx里面再重定向到b.aspx,如果b.aspx不存在的话就会再次触发404错误,这次的404错误会由.net来处理
    2>假定配置IIS的自定义错误页面为404.htm,在Application_Error拦截到404错误以后读入404.htm文件的内容,然后通过response.write输出
      

  21.   

    非常感谢,分析得很有条理,我测试了一下:IIS配置如下:可以确定的是,我的网站的根目录肯定是存在404.aspx的,也没有程序上的错误,下图是直接访问404.aspx的结果:但访问不存在的目录或其它后缀后,依然是显示IIS自身的错误,是IIS哪里配置错误了吗?
    IIS在配置自定义错误页面后,已经重启过,电脑也重启过,依然没显示我那个404.aspx
      

  22.   

    你可以试试在webconfig里设置<httpRuntime relaxedUrlToFileSystemMapping="true"/>但ASP.net 不能完全控制URL请求判断这个因为在此之前 IIS 的筛选器已经做出的选择,不管你是经典还是集成模式简单的说
    https://msdn.microsoft.com/c.h
    显示404
    http://msdn.microsoft.com/c.
    IIS 筛选器直接拦截了 根本不会理会.NET的自定义错误
    我用的是在IIS 配置URL rewrite 筛选器来筛选白名单URL比如这个http://forums.iis.net/c.
      

  23.   

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>只要在web.config中配置如下节点即可!!这是网页级的处理,而IIS配置的那个是站点级的~~