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

如何限制对ASP.NET中具有特定扩展名的文件的访问?,asp.net,file-extension,file-access,Asp.net,File Extension,File Access,我的web应用程序中有一个ADO.NET实体框架*.edmx文件 当我在浏览器中(应用程序运行时)浏览到edmx文件时,它不会像浏览到*.cs或vb文件时那样显示错误页面,它会打开edmx并向所有用户显示我的模型方案 如何避免这种情况。您应该将扩展映射到Web.config中的ASP.NET的System.Web.HttpForbiddenHandler类。如果您使用的是IIS6,那么在执行此操作之前,您应该已将扩展映射到ASP.NET ISAPI处理程序 IIS7集成模式: <syste

我的web应用程序中有一个ADO.NET实体框架*.edmx文件

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


如何避免这种情况。

您应该将扩展映射到
Web.config
中的ASP.NET的
System.Web.HttpForbiddenHandler
类。如果您使用的是IIS6,那么在执行此操作之前,您应该已将扩展映射到ASP.NET ISAPI处理程序

IIS7集成模式:

<system.webServer>
    <handlers>
        <add name="MyForbiddenExtensionHandler" 
             path="*.edmx" 
             verb="*" 
             type="System.Web.HttpForbiddenHandler" 
             preCondition="integratedMode" />
    </handlers>
</system.webServer>

你可以用两种方法来做这件事;首先在web.config中,然后在IIS中

<system.web>
    <httpHandlers>
        <add verb="*" path="*.edmx" type="System.Web.HttpForbiddenHandler" />
    </httpHandlers>
</system.web>


type=“System.Web.httpBankedenHandler,System.Web”System.Web在最后抛出了一个错误。应该是type=“System.Web.HttpForbiddenHandler”。将答案更新为System.Web程序集的全名,以使其万无一失。我更喜欢指定程序集的名称,以防止它在包含同名类型时意外从另一个程序集加载。值得注意的是,这只适用于根web.config-Mehrdad的答案适用于子文件夹
<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.web>
    <httpHandlers>
        <add verb="*" path="*.edmx" type="System.Web.HttpForbiddenHandler" />
    </httpHandlers>
</system.web>