【发布时间】:2009-06-27 21:42:55
【问题描述】:
我的 Web 应用程序中有一个 ADO.NET Entity-Framework *.edmx 文件。
当我在浏览器中(当应用程序运行时)浏览到 edmx 文件时,它不会像浏览到 *.cs 或 vb 文件时那样显示错误页面,它会打开 edmx 并显示我的模型方案给所有用户!!!
我怎样才能避免这种情况。
【问题讨论】:
标签: asp.net file-extension file-access
我的 Web 应用程序中有一个 ADO.NET Entity-Framework *.edmx 文件。
当我在浏览器中(当应用程序运行时)浏览到 edmx 文件时,它不会像浏览到 *.cs 或 vb 文件时那样显示错误页面,它会打开 edmx 并显示我的模型方案给所有用户!!!
我怎样才能避免这种情况。
【问题讨论】:
标签: asp.net file-extension file-access
您应该将扩展映射到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>
【讨论】:
您可以通过两种方式做到这一点;首先在 web.config 中,其次在 IIS 中
<system.web>
<httpHandlers>
<add verb="*" path="*.edmx" type="System.Web.HttpForbiddenHandler" />
</httpHandlers>
</system.web>
这是一个指向微软支持页面的链接,该页面详细说明了如何在 Web 配置和 IIS 中执行此操作。
【讨论】: