如何在ASP.NET中限制对具有特定扩展名的文件的访问?

Shi*_*mmy 10 asp.net file-extension file-access

我在我的Web应用程序中有一个ADO.NET Entity-Framework*.edmx文件.

当我在浏览器中浏览(当应用程序运行时)到edmx文件时,它不显示错误页面,就像浏览到*.cs或vb文件一样,它会打开edmx并向所有显示我的模型方案用户!

我怎么能避免这种情况.

Meh*_*ari 11

您应该将扩展名映射到ASP.NET的System.Web.HttpForbiddenHandler类中web.config.如果您使用的是IIS6,则必须先将扩展名映射到ASP.NET ISAPI处理程序.

IIS7集成模式:

<system.webServer>
    <handlers>
        <add name="MyForbiddenExtensionHandler" 
             path="*.edmx" 
             verb="*" 
             type="System.Web.HttpForbiddenHandler" 
             preCondition="integratedMode" />
    </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

IIS7经典模式.就像是:

<system.web>
  <httpHandlers>
     <add path="*.edmx" 
         verb="*" 
         type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </httpHandlers>
</system.web>
<system.webServer>
  <handlers>
     <add name="MyExtensionISAPI" 
         path="*.edmx" 
         verb="*" 
         modules="IsapiModule" 
         scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
  </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

IIS6(在将处理程序映射到aspnet_isapi.dllIIS6配置之后):

<system.web>
  <httpHandlers>
     <add path="*.edmx" 
         verb="*" 
         type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </httpHandlers>
</system.web>
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 8

你可以这两种方式做到这一点; 首先在web.config中,或者在IIS中

<system.web>
    <httpHandlers>
        <add verb="*" path="*.edmx" type="System.Web.HttpForbiddenHandler" />
    </httpHandlers>
</system.web>
Run Code Online (Sandbox Code Playgroud)

这是微软支持页面的链接,详细说明了如何在Web配置和IIS中执行此操作.

http://support.microsoft.com/kb/815152

  • 值得注意的是,这仅适用于根web.config - Mehrdad的答案适用于子文件夹 (2认同)