У меня есть подкаталог в моем проекте ASP.NET, содержащий файлы утилит. Они нужны коду во время выполнения, но я не хочу, чтобы они были видны в Интернете.
Какой синтаксис используется в файле Web.config для блокировки доступа всех пользователей к одному подкаталогу и всему его содержимому?
решение1
В IIS 7 появилась новая функция "фильтрации запросов". Вероятно, вы захотите использовать конфигурацию скрытых сегментов:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="BIN"/>
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Это вызываетhttp://вашсайт/binне быть обслуживаемым (ноhttp://yoursite/binaryдо сих пор работает)
Проверить: http://learn.iis.net/page.aspx/143/how-to-use-request-filtering
решение2
Ваша проблема в том, что если IIS просто возвращает файлы, ASP.Net никогда не получит шанса вмешаться. Я считаю, что это можно сделать, включив аутентификацию на основе форм и повозившись с этим, но я бы просто переместил файлы за пределы папки wwwroot.
Дж.Р.
решение3
Это должно сработать:
<configuration>
<location path="FolderName">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
решение4
Это старый вопрос, но это простое вложение web.config
для любого каталога в пути веб-сервера. Он удаляет все роли пользователей, затем устанавливает доступ по умолчанию на deny. Просто и не требует настройки.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Deny" users="*" />
</authorization>
</security>
</system.webServer>
</configuration>