Я новичок в .NET и MVC3, и в настоящее время я нахожусь в процессе преобразования старого классического сайта ASP в сайт приложения MVC3.
На этом же сайте есть четыре области, в которых мне понадобится уникальный входстраницы и дискретные уровни доступа и безопасности.Это означает, что я не хочу использовать код по умолчанию в моем файле web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/Logon" timeout="2880" />
</authentication>
Вместо этого я хотел бы иметь возможность настроить Области внутри моего приложения, а затем использовать <location>
атрибут для настройки правил аутентификации и авторизации для каждого.Так, например:
<location path="AreaName">
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/AreaName/Login" timeout="15" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
Если я удаляю эти три строки:
<authentication mode="Forms">
<forms loginUrl="~/AreaName/Login" timeout="15" />
</authentication>
Затем, когда я пытаюсь получить доступ к любому из представлений в пути «AreaName», я перенаправляется первымВернуться к ~ / Аккаунт / LogOn.Если я вставлю эти три строки обратно, я получу следующую ошибку:
Сообщение об ошибке синтаксического анализатора: Ошибка использования раздела, зарегистрированного как allowDefinition = 'MachineToApplication', за пределамиуровень приложения.Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS.
Я провел поиск этой ошибки, и ни одно из предложенных предложений, похоже, не применимо.Я видел один ответ, в котором логику следует размещать на контроллере, а не в веб-конфигурации, но эти методы по-прежнему подразумевают, что вы собираетесь использовать значение по умолчанию <authentication>
для всего сайта.
Надеюсьне понимаю, почему у меня не может быть <authentication>
свойства внутри <location>
.Любая помощь по этому вопросу была бы очень признательна.
Я прошу прощения, если я неправильно сформулировал любой из этих вопросов.