我想限制我的网络应用,以便无法下载/显示.txt文件。 这是我可以在我的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信息服务(IIS)版本5.0,5.1或6.0 .NET Framework 1.0,1.1或2.0版 Microsoft Visual Studio 2003或Visual Studio 2005
...表示在.NET 3和IIS7中不支持...
IIS7中指定了哪个位置?
答案 0 :(得分:9)
请参阅此MS支持文章,了解如何实现此目标:HOW TO: Use ASP.NET to Protect File Types。
它涉及设置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>
答案 1 :(得分:4)
行。我发现了问题。在 .NET 3 中,这在web.config文件的不同部分中指定。它不是<system.web><httpHandlers>
,而是<system.webServer><handlers>
,就像这样:
<system.webServer>
<handlers>
<add name="NoTxtAllowed" verb="*" path="*.txt"
type="System.Web.HttpForbiddenHandler" />
</handlers>
</system.webServer>
虽然这是我的答案,但我已将 Ahmad Mageed 的答案标记为 的答案,因为他在我在我的问题中添加.NET 3的版本信息之前提供它。他还指出了找到解决方案的正确方向。请注意,他的答案对于3之前的所有.NET版本都是正确的。
编辑: IIS 7.0支持2种模式,即Integrated和Classic。集成是IIS 7.0上ASP.NET应用程序的默认模式,需要将处理程序放在<system.webServer>/<handlers>
而不是<system.web>/<httpHandlers>
中(经典模式和以前的IIS版本支持)。
有关此问题的有用链接:
答案 2 :(得分:2)
这是您在IIS中设置的内容,但默认情况下它应该存在。
答案 3 :(得分:0)
你能把它们改成.config吗?或.aspx?