2016-09-07 3 views
4

В настоящее время я запрещаю анонимным пользователям доступ к моему корневому приложению.Как разрешить анонимному пользователю доступ к виртуальному каталогу

/web.config

<system.web> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
    </system.web> 

Но я позволяет анонимный доступ к общественным ресурсам (изображения, CSS и т.д.):

<location path="Images"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

Теперь я хотел бы добавить виртуальный каталог, должны быть доступны анонимным пользователям. Я добавил конфигурацию, основанную на пути «Изображения», но всякий раз, когда я пытаюсь получить доступ к этому местоположению, я перенаправляюсь на страницу входа с помощью ReturnURL, установленного в виртуальный каталог.

<location path="virtualDirectory"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

Кроме того, я попытался указать глобальное разрешение в web.config моего виртуального каталога, но получаю сообщение об ошибке сказав я могу только то, что когда-то

/virtualDirectory/web.config:

<system.web> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 

Как разрешить анонимный доступ к виртуальному каталогу, когда мое корневое приложение предотвращает анонимный доступ?

+0

Что IIS версии вы используете? Я настроил мой с теми же настройками, и он сработал –

+0

Запуск локально на Windows 8 –

+0

Это поможет, если вы хотите прокомментировать уже предоставленные ответы. Тебе не нравятся, но ты ничего не говоришь =/Ты их пробовал? Каковы были результаты? –

ответ

3

В вашей глобальной web.config инкапсулирования

<system.web> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 
</system.web> 

с

<location path="." inheritInChildApplications="false"> 
    <system.web> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
    </system.web> 
</location> 

Это значит - разрешение соблюдается только в корневом приложении, а не для ребенка приложений.

0

В своей глобальной web.config удалить

<location path="virtualDirectory"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 

Затем перейдите в менеджер IIS и

  1. В каталоге Home области виртуальной, дважды щелкните Authentication

  2. правой кнопкой мыши Анонимная аутентификация, а затем нажмите «Включить»

0

Ваши правила авторизации выглядят хорошо. Последняя ошибка, которую вы получаете, состоит в том, что вы можете иметь раздел авторизации (фактически любой раздел) только один раз для папки/файла/пути. Таким образом, либо глобально, то есть под <location path="virtualDirectory">, либо только в web.config виртуального каталога. Наличие в обоих местах даст вам ошибку. Что такое аутентификация, установленная в Virtual Directory.

Удостоверьтесь, что анонимный включен вместе с разрешающим правилом авторизации. (Диспетчер IIS -> Сайты -> ваш конкретный сайт-> виртуальный каталог-> в центральной панели Аутентификация)

Также в графическом интерфейсе IIS существуют правила авторизации ASP.NET (тот, который вы используете в настоящее время) и разрешение IIS правила. Удостоверьтесь, что нет никаких запретов на правила авторизации IIS.

enter image description here

3

Некоторые примечания.

  1. Значок звездочки (*) представляет собой всю идентичность.

  2. Вопросительный знак (?) Представляет анонимную идентификацию.

  3. В идеале вам не нужно устанавливать разрешение для анонимного пользователя для вашего виртуального каталога в глобальном web.config.

  4. Перейти к IIS в разделе «Виртуальный каталог»> выберите «Аутентификация»> «Включить анонимную проверку подлинности».

См

ASP.NET Authorization

How to: Create and Configure Virtual Directories in IIS