【问题标题】:How do I restrict access to files with specific extensions in ASP.NET?如何限制对 ASP.NET 中具有特定扩展名的文件的访问?
【发布时间】:2009-06-27 21:42:55
【问题描述】:

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

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

我怎样才能避免这种情况。

【问题讨论】:

    标签: asp.net file-extension file-access


    【解决方案1】:

    您应该将扩展映射到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>
    

    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>
    

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

    <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>
    

    【讨论】:

    • type="System.Web.HttpForbiddenHandler, System.Web" System.Web 最后,抛出错误。应该只是 type="System.Web.HttpForbiddenHandler"。
    • 用 System.Web 程序集的全名更新了答案,使其万无一失。我更喜欢指定程序集的名称,以防止它在包含同名类型的情况下从另一个程序集中意外加载。
    【解决方案2】:

    您可以通过两种方式做到这一点;首先在 web.config 中,其次在 IIS 中

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

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

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

    【讨论】:

    • 值得注意的是,这仅适用于根 web.config - Mehrdad 的答案适用于子文件夹
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2016-01-06
    • 2020-06-06
    • 2011-02-14
    相关资源
    最近更新 更多