Как мне ограничить доступ к файлам с определенными расширениями в ASP.NET?
-
20-08-2019 - |
Вопрос
В моем веб-приложении есть файл ADO.NET Entity-Framework *.edmx.
Когда я просматриваю в браузере (когда приложение запущено) файл edmx, он не показывает страницу ошибки, как при просмотре файла * .cs или vb, он открывает edmx и показывает мою схему модели всем пользователям!!!
Как я могу избежать этого?
Решение
Вы можете сделать это двумя способами;во-первых, в web.config или, во-вторых, в IIS
<system.web>
<httpHandlers>
<add verb="*" path="*.edmx" type="System.Web.HttpForbiddenHandler" />
</httpHandlers>
</system.web>
Вот ссылка на страницу поддержки Microsoft, на которой подробно описано, как это сделать в web config и IIS.
Другие советы
Вы должны сопоставить расширение с ASP.NET 's System.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>