Вопрос по asp.net – Как ограничить доступ к файлам с определенными расширениями в ASP.NET?

10

В моем веб-приложении есть файл ADO.NET Entity-Framework * .edmx.

Когда я просматриваю в браузере (когда приложение запущено) файл edmx, он не отображает страницу ошибки, как при просмотре файла * .cs или vb, он открывает edmx и показывает мою схему модели всем пользователей !!!

Как я могу избежать этого.

Ваш Ответ

2   ответа
11

Вы должны сопоставить расширение с ASP.NETSystem.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>

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 (после сопоставления обработчика сaspnet_isapi.dll в конфигурации IIS6):

<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 = & quot; System.Web.HttpForbiddenHandler, System.Web & quot; System.Web в конце выкинул ошибку. должно быть просто type = & quot; System.Web.HttpForbiddenHandler & quot ;. Shimmy
Обновлен ответ с полным названием сборки System.Web, чтобы сделать его надежным. Я предпочитаю указывать имя сборки, чтобы предотвратить ее случайную загрузку из другой сборки, если она содержит тип с тем же именем.
8

Вы можете сделать это двумя способами; во первых в web.config или во вторых в IIS

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

Вот ссылка на страницу поддержки Microsoft, в которой подробно описано, как это сделать в веб-конфигурации и IIS.

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

Стоит отметить, что это работает только для корневого web.config - ответ Mehrdad работает для подпапок

Похожие вопросы