首页 新闻 会员 周边

global.asax文件问题

0
悬赏园豆:10 [已关闭问题]

请教一个问题:我有一个网站A,在VS中,不论访问A以下任何文件,均会触发Global.asax中的Application_AuthenticateRequest事件,当我把A发布到IIS后,再访问非Aspx文件(如*.txt或者htm)并不会再触发Global.asax文件中的事件,何解?

Ron.Liang的主页 Ron.Liang | 菜鸟二级 | 园豆:271
提问于:2010-02-24 11:20
< >
分享
其他回答(6)
0

这应该不难理解,因为非Aspx文件(如*.txt或者htm)不是应用程序的一部分。IIS不处理这些请求。

你可以试试将这些文件后缀名直接改为aspx,欺骗IIS试试。

邀月 | 园豆:25475 (高人七级) | 2010-02-24 12:05
0

配置下IIS。

添加后缀看看

woody.wu | 园豆:3621 (老鸟四级) | 2010-02-24 13:05
0

IIS中的程序映射问题。未设置的前提下,htm一类的请求提交到IIS 上后 没有分配给ISAPI程序处理

Damon.Tian | 园豆:255 (菜鸟二级) | 2010-02-24 14:40
0

邀月说的有些问题,不是说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中的事件。

上面描述如果还有理解不清的地方可以给我留言...

西越泽 | 园豆:10775 (专家六级) | 2010-02-26 17:57
0

针对访问的静态文件(比如html,css.js,图片等等),这些请求是直接由IIS处理后返回的,所以DOTNET框架根本没机会处理,对应的Global.asax肯定是不会触发的!

langford | 园豆:710 (小虾三级) | 2010-02-27 00:28
0

上面的上面说的很对

LittlePeng | 园豆:3445 (老鸟四级) | 2010-03-01 14:44
0

碰巧遇到这个问题了。

 

补充一点,在“添加/编辑应用程序扩展名映射”的画面上,去掉“确认文件是否存在”的勾勾(IIS)。
否则会先检查是否存在物理文件,没有就404了

灰上小楼 | 园豆:12 (初学一级) | 2013-07-09 16:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册