Web.config: подстановочные знаки в местоположении и авторизации

В моем приложении ASP.Net я использую маршрутизацию URL. Формат URL-адреса несколько напоминает: http://site/{culture}/project/{id}.

Чтобы пользователи могли посетить страницу входа и восстановления, я добавил следующие данные в свой web.config:

<location path="en-GB/login">
 <system.web>
 <authorization>
 <allow users="*">
 </allow></authorization>
 </system.web>
</location>
<location path="nl-NL/login">
 <system.web>
 <authorization>
 <allow users="*">
 </allow></authorization>
 </system.web>
</location>
<location path="login">
 <system.web>
 <authorization>
 <allow users="*">
 </allow></authorization>
 </system.web>
</location>

Есть ли форма обозначения, чтобы я мог пропустить часть en-GB и заменить ее подстановочным знаком? Я хочу, чтобы страница входа и восстановления и т.д. Была доступна независимо от культуры.

2 ответа

Я не верю, что вы можете размещать относительные пути в корневом web.config, но это не проблема. Вы можете использовать поддержку вложенных файлов Web.Config в своих интересах.

Вы можете поместить файл web.config, похожий на этот, в любой из ваших подкаталогов (настраиваясь в соответствии с потребностями этого конкретного каталога), и вы получите поддержку, которую вы ищете. Это также намного легче поддерживать, поскольку настройки ближе к файлам кода, которые они контролируют.

<!--?xml version="1.0"?-->
<configuration>
 <system.web>
 <authorization>
 <deny users="*">
 </deny></authorization>
 </system.web>
</configuration>

Общая конфигурация для типов аутентификации, ролей и т.д. будет выполнена в web.config в корневом каталоге приложений. В результате вы не можете установить отдельную страницу входа в каталог из этого метода, но у вас может быть страница входа, которая автоматически обрабатывает перенаправление при необходимости (анализируя значение ReturnURL QueryString).


Глядя на этот, вы можете изменить расширение своей страницы входа и сделать что-то вроде следующего:

<system.webserver>
 <security>
 <requestfiltering>
 <fileextensions>
 <add fileextension=".login" allowed="true">
 </add></fileextensions>
 </requestfiltering>
 </security>
</system.webserver>

Я не пробовал это, но возможно, что-то попробовать.

licensed under cc by-sa 3.0 with attribution.