这应该不难理解,因为非Aspx文件(如*.txt或者htm)不是应用程序的一部分。IIS不处理这些请求。
你可以试试将这些文件后缀名直接改为aspx,欺骗IIS试试。
配置下IIS。
添加后缀看看
IIS中的程序映射问题。未设置的前提下,htm一类的请求提交到IIS 上后 没有分配给ISAPI程序处理
邀月说的有些问题,不是说IIS不处理这些后缀名的文件,应该是IIS本身它只处理静态资源文件(html文档)。而我们一般所说的.aspx文件是不会被IIS直接处理的。是当我们访问.aspx页面时,IIS中做了有关于文件后缀名的映射,在IIS服务器中通常会映射到aspnet_isapi.dll 这个程序集,然后.aspx页面的程序都将会由该程序集进行处理,处理完成后返回一个静态html文档交给IIS,IIS才会回发我们的访问请求。
而你说到的.txt或者.htm文件,之所以不会触发Global.asax文件中的事件,就是由于Global.asax这个文件属于aspnet_isapi.dll 这个程序集处理的范畴,而.txt或者.htm文件IIS自身就会处理掉,会直接访问再返回给请求的。所以这里不会触发,要满足你的这个要求,woody.wu 做了截图。其实意思也就是把C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 以 通配符应用程序映射 的方式添加到IIS中.这样子的意思就是告诉IIS,无论我访问何种后缀名称的资源,都必须交由 aspnet_isapi.dll 程序集处理后再返回。
如此即可触发Global.asax中的事件。
上面描述如果还有理解不清的地方可以给我留言...
针对访问的静态文件(比如html,css.js,图片等等),这些请求是直接由IIS处理后返回的,所以DOTNET框架根本没机会处理,对应的Global.asax肯定是不会触发的!
上面的上面说的很对
碰巧遇到这个问题了。
补充一点,在“添加/编辑应用程序扩展名映射”的画面上,去掉“确认文件是否存在”的勾勾(IIS)。
否则会先检查是否存在物理文件,没有就404了