我在我的web應用程序中有一個ADO.NET Entity-Framework * .edmx文件。如何限制對ASP.NET中具有特定擴展名的文件的訪問?
當我瀏覽器(當應用程序運行時)瀏覽到edmx文件時,它不會顯示錯誤頁面,例如瀏覽到* .cs或vb文件時,它會打開edmx並顯示我的模型計劃給所有的用戶!
我該如何避免這種情況。
我在我的web應用程序中有一個ADO.NET Entity-Framework * .edmx文件。如何限制對ASP.NET中具有特定擴展名的文件的訪問?
當我瀏覽器(當應用程序運行時)瀏覽到edmx文件時,它不會顯示錯誤頁面,例如瀏覽到* .cs或vb文件時,它會打開edmx並顯示我的模型計劃給所有的用戶!
我該如何避免這種情況。
你可以這樣做兩種方式;首先在web.config或其次在IIS
下面是一個微軟支持頁面,詳細說明如何做到這一點的web配置和IIS的鏈接。
您應該將擴展名映射到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>
類型= 「System.Web.HttpForbiddenHandler,System.Web程序」 末 的System.Web,引發了錯誤。應該只是type =「System.Web.HttpForbiddenHandler」。 – Shimmy 2009-06-27 22:30:50
用System.Web程序集的全名更新了答案,使其十分簡單。我更喜歡指定程序集的名稱,以防止它從另一個程序集中意外加載,如果它包含具有相同名稱的類型的話。 – 2009-06-27 22:52:23