Asp.Net的web.config中有一个httpHandlers元素,可以自定义ISAPI扩展。
比如,可以将.xml映射到aspnet_isapi.dll,并设置相应的web.config
<httpHandlers>
<add path="*.xml" verb="*" type="HtmlHttpHandler"/>
</httpHandlers>
这样,就可以将所有.xml的请求交给HtmlHttpHandler来处理,或者说是一种URL重写。
假定我访问1.xml,实际上服务器上执行的并不是1.xml文件,而是一个.aspx文件。
反过来说,要执行.xml就必须得有一个对应的.aspx文件来处理并实现。
那如果我要去访问一个真实存在的.xml文件该怎么办?
直接把.xml传到xml目录下,再去访问http://domain/xml/xxx.xml?很明显是不行的。
因为此时的.xml已由HtmlHttpHandler去实现了。
如果我想实现在xml目录下,不由HttpHandler来处理.xml文件,该如何处理呢?
<httpHandlers>
<add... /> 指定映射到处理程序的谓词/路径。
<remove... /> 移除映射到处理程序的谓词/路径。remove 指令必须与前一个 add
指令的谓词/路径组合完全匹配。该指令不支持通配符。
<clear/> 移除当前已配置或已继承的所有处理程序映射。
</httpHandlers>
按上面的说明,应该在xml目录下添加一个web.config,然后在httpHandlers元素中增加一个clear就行了
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<httpHandlers>
<clear />
</httpHandlers>
</system.web>
</configuration>
但,http://domain/xml/xxx.xml依然无法访问,难道是<clear />没有起作用?