У меня проблема с установкой сопоставления по умолчанию в IIS 6. Я хочу защитить файлы * .HTML с помощью проверки подлинности с помощью форм ASP.NET. Проблема, похоже, связана с использованием виртуальных каталогов для хранения файлов html. Вот как это делается:
пример дерева каталогов
c:/inetpub/ (nothing in here)
d:/web_files/my_web_apps
d:/web_files/my_web_apps/app1/
d:/web_files/my_web_apps/app2/
d:/web_files/my_web_apps/html_files/
app1 и app2 оба имеют доступ к одному и тому же каталогу html_files, поэтому html_files установлен как виртуальный каталог в веб-приложениях в IIS ...
пример дерева веб-каталогов
//app1/html_files/ (points to physical directory: d:/web_files/my_web_apps/html_files/)
//app2/html_files/ (points to physical directory: d:/web_files/my_web_apps/html_files/)
Если я помещаю файл с именем test.html в корень // app1 /, а затем добавляю сопоставление по умолчанию с dll asp.net и настраиваю безопасность в корневой папке с помощью deny = "?", Тогда доступ к test.html работает именно так, как ожидалось. Если я не аутентифицирован, он переводит меня на страницу login.aspx, а если я аутентифицирован, отображается test.html.
Если я помещу файл test.html в каталог html_files, я получу совершенно другое поведение. Теперь загружается страница login.aspx, и я вставил код, чтобы проверить, прошел ли я аутентификацию:
<p>autheticated: <%=User.Identity.IsAuthenticated%></p>
Я подумал, что он скажет false, потому что еще зачем загружать страницу входа? Нет, это правда - значит, он знает, что я аутентифицирован, но не дает мне доступа к файлу test.html.
Я потратил на это несколько часов и не смог решить. Я собираюсь потратить еще немного времени на Google, чтобы посмотреть, не пропустил ли я что-нибудь. Скрещенные пальцы.
Я понял. После большого количества чтения и большого количества проб и ошибок. Где-то в процессе кто-то преобразовал виртуальные каталоги в приложения в консоли управления IIS6. Я «удалил» приложение из каждого каталога, о котором идет речь, и теперь безопасность работает так, как должна.