这是我可以在我的web.config文件中设置的东西吗?
我在配置文件中尝试了这个:
<system.web> <httpHandlers> <add verb="*" path="*.txt" type="System.Web.HttpForbiddenHandler" /> </httpHandlers> </system.web>
……但它没有效果.我使用的是IIS7,应用程序是.NET3.5,这可能与它有关吗?我知道这实际上适用于.NEt 1.0 1.1和2.0.
我在文档中注意到了这个(add httpHandlers),需求部分:
Microsoft Internet Information Services (IIS) version 5.0,5.1,or 6.0
The .NET Framework version 1.0,1.1,or 2.0
Microsoft Visual Studio 2003 or Visual Studio 2005
…表示.NET 3和IIS7不支持此…
在IIS7中指定了哪里?
解决方法
它涉及设置IIS以将这些请求转发到ASP.NET,然后设置web.config以阻止所需的文件类型,例如:(这适用于您的开发机器和IIS7之前 – 请务必在下面看到)
<system.web> <httpHandlers> <add verb="*" path="*.ini" type="System.Web.HttpForbiddenHandler" /> </httpHandlers> </system.web>
根据httpHandlers Element page,从.NET 2.0开始默认禁止以下扩展(.ini不是其中之一):
* .asax,* .ascx,*.master,* .skin,* .browser,*.sitemap,*.config,*.cs,* .csproj,*.vb,* .vbproj,* .webinfo,*. licx,* .resx,* .resources,* .mdb,* .vjsproj,* .java,*.jsl,* .ldb,* .dsdgm,* .ssdgm,* .lsad,* .ssmap,* .cd,* .dsprototype,* .lsaprototype,* .sdm,* .sdmDocument,* .mdf,* .ldf
编辑:这适用于IIS 7.0之前的IIS版本. IIS 7.0添加了一种额外的操作模式,称为集成模式(ASP.NET的默认模式),它需要将处理程序放在< system.webServer> /< handlers>中.而不是< system.web> /< httpHandlers>.我在此页面上添加了一些更多信息和链接到@ awe的答案,请查看更多详细信息.
重要!对于IIS 7.0或更高版本
如编辑中所指定,您需要放置< add>元素在不同的地方,规则也需要一个名称 – 如果你没有指定名称,你将在重新启动时得到500内部错误
<system.webServer> <handlers> <add name="IgnoreIni" verb="*" path="*.ini" type="System.Web.HttpForbiddenHandler" /> </handlers> </system.webServer>