IIS Express выдает ошибку «Доступ запрещен» при отладке ASP.NET MVC

103

Я создал проект ASP.NET MVC 3 и использую IIS Express в качестве веб-сервера при разработке. Когда я пытаюсь отладить, я получаю сообщение об ошибке ниже.

Как это решить?

Ошибка сервера в приложении '/'

Доступ запрещен. Описание: произошла ошибка при доступе к ресурсам, необходимым для обслуживания этого запроса. Возможно, сервер не настроен для доступа к запрошенному URL-адресу.

Сообщение об ошибке 401.2 .: Неавторизованный: не удалось войти в систему из-за конфигурации сервера. Убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных и методов проверки подлинности, включенных на веб-сервере. Обратитесь к администратору веб-сервера за дополнительной помощью.

Крис-I
источник
3
вы используете IISExpress без прав администратора?
chandmk
2
Итак, после некоторого удара головой по этому поводу я наконец понял, что это потому, что VS не установил страницу по умолчанию и, очевидно, IISExpress.exe не предоставляет списки папок, чтобы сделать это очевидным.
Марк Аллен

Ответы:

114

Если вы используете Visual Studio, вы также можете щелкнуть проект левой кнопкой мыши в обозревателе решений и изменить свойство Windows Authentication на Enabled в окне свойств .

Джейсон
источник
2
Это не относится к Visual Studio 2012, это можно сделать, по крайней мере, и в Visual Studio 2010.
Лоик Лопес,
5
Работал у меня в VS 2013.
kaybee99
2
Вам также необходимо отключить анонимную аутентификацию.
Застеклен
1
В обозревателе решений щелкните имя проекта в узле решения, затем переключитесь в окно свойств, там вы увидите, что для свойства Windows Authentication установлено значение Enabled
sairfan
1
Я не вижу этого параметра в окне свойств. Я использую VS 2015.
Марк Бонафе
99

Причиной этой проблемы было то, что IIS Express не разрешал WindowsAuthentication. Это можно включить, установив

<windowsAuthentication enabled="true">

в файле applicationhost.config, расположенном по адресу C: \ Users [имя пользователя] \ Documents \ IISExpress \ config.

Муравей Свифт
источник
19
Visual Studio 2010 и 2012 могут добавить этот параметр для каждого проекта, чтобы глобальный параметр не изменялся по сравнению с его значением по умолчанию, см. Stackoverflow.com/a/7168308/23566
Роберт Клейпул
Я пробую этот параметр, потому что я также периодически получаю эту ошибку в VS 2013 , давайте посмотрим, поможет ли это, я дам вам знать.
Мэтт
2
Лучше использовать% userprofile% \ documents \ iisexpress \ config \ applicationhost.config. Мой был на D: (спасибо, Дэн! Danesparza.net/2014/09/… )
Джереми Ратли
Это единственное решение, сработавшее для меня, большое спасибо!
Мохаммад Анини
Пробовал это в VS 2017, и это не сработало. Решение, опубликованное Джейсоном, действительно сработало.
myroslav
73

Я использовал ответ Джейсона, но хотел уточнить, как попасть в свойства.

  1. Выберите проект в обозревателе решений

введите описание изображения здесь

  1. F4 чтобы перейти к свойствам (отличным от свойств, вызываемых правой кнопкой мыши)
  2. Измените проверку подлинности Windows на Включено

введите описание изображения здесь

Тони Л.
источник
3
Большое спасибо за разъяснение и указание, что нужно изменить свойства F4.
PeterDNCO
1
Спасибо! Мне также пришлось установить «Анонимная аутентификация» на «Включено».
Махеш
1
Большое спасибо!
FunMatters
1
Вы прекрасны.
kosherjellyfish
1
Я использую VS 2015, этого не существует!
Марк Бонафе
18

Размещение в IIS Express: 1. Щелкните свой проект в обозревателе решений, чтобы выбрать проект. 2. Если панель «Свойства» не открыта, откройте ее (F4). 3. На панели «Свойства» вашего проекта: a) Установите для «Анонимная проверка подлинности» значение «Отключено». б) Установите для параметра «Проверка подлинности Windows» значение «Включено».

Даниэль
источник
12

В моем случае мне пришлось открыть файл:

C:\...\Documents\IISExpress\config\applicationhost.config

У меня было это внутри файла:

  <authentication>
  <anonymousAuthentication enabled="true" User="" />

Я только что снял User=""деталь. Я правда не знаю, как эта штука попала туда ... :)

Примечание. Убедитесь, что в конце applicationhost.config:

   .
   .
   .
   <location path="MyCompany.MyProjectName.Web">
        <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="false" />
                </authentication>
            </security>
        </system.webServer>
    </location>
</configuration>

Вы также можете посмотреть здесь: https://stackoverflow.com/a/10041779/114029

Теперь я могу получить доступ к странице входа в систему, как и ожидалось.

Лениэль Маккаферри
источник
1
Я пошел по твоим стопам, но у меня это не работает. Если открыть с vs2010, он работает нормально, в чем проблема по сравнению с 2013
GANI
@ user1016740 Я не уверен, потому что есть множество возможностей / путей, которыми нужно следовать, чтобы попытаться решить эту проблему. Шаги, которые я описал здесь, решили это в моей среде, которая, как мне кажется, отличается от вашей.
Лениэль Маккаферри
8

В моем случае предыдущий запуск моего приложения из VS зарезервировал URL-адрес. Я мог убедиться в этом, запустив в консоли:

netsh http show urlacl

чтобы удалить это бронирование, я запустил это в консоли с повышенными привилегиями:

netsh http delete urlacl http://127.0.0.1:10002/

Я нашел эти шаги здесь решить мою проблему.

Я использую VS2013

Билл Дарси
источник
Это очень удобно, если вы когда-либо редактировали свой applicationhost.config для одновременного запуска сайта на нескольких портах. Удаление записей из .config не удаляет никаких резервирований в netsh. Спасибо чувак.
Dusda 01
5

Мне пришлось запустить Visual Studio, Administrative Modeчтобы избавиться от этой ошибки.

Серж Саган
источник
3

У меня была такая же проблема, и, наконец, я смог ее преодолеть.

Solution ExplorerRight click on projectPropertiesWeb tabProject Url

Я выбрал другой номер порта , и все стало хорошо!

лягушка
источник
1

Ничего из вышеперечисленного не помогло мне. Это работало для меня до сегодняшнего дня. Затем я понял, что работаю над созданием размещенного соединения на своем ноутбуке и поделился подключением к Интернету с моим беспроводным сетевым подключением.

Чтобы исправить мою проблему:

Перейдите в Панель управления> Сеть и Интернет> Сетевые подключения.

Щелкните правой кнопкой мыши любое дополнительное беспроводное сетевое соединение, которое у вас может быть (мое называлось Wireless Network Connection 2), и нажмите «Свойства».

Перейдите на вкладку "Поделиться" вверху.

Снимите флажок «Разрешить другим пользователям сети подключаться через Интернет-соединение этого компьютера».

Нажмите ОК> затем Применить.

Надеюсь это поможет!

Райан С
источник
1

Я открыл свой файл web.config, нашел и удалил этот раздел:

<authorization>
  <deny users="?" />
</authorization>

и мой сайт появился, но есть проблемы с аутентификацией ..

kfn
источник
Хорошо, это помогло решить проблему, но теперь у меня есть другие проблемы, которые мне нужно исправить.
Джамшайд Камран
0

Я только что исправил эту точную проблему в IIS EXPRESS, исправив ее, отредактировав файл host .config приложения в разделе местоположения, специфичном для приведенного ниже. Я установил проверку подлинности Windows в Visual Studio 2012, но когда я вошел в XML, это выглядело так.

тег Windows auth необходимо добавить ниже, как показано.

<windowsAuthentication enabled="true" />

<location path="MyApplicationbeingDebugged">
        ``<system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="false" />
                    <!-- INSERT TAG HERE --> 
                </authentication>
            </security>
        </system.webServer>
</location>
user3507561
источник
0

Я боролся с этой проблемой, пытаясь создать простое приложение для SharePoint с использованием Provider Hosted.

После прохождения applicationhost.config в разделе для basicAuthentication было установлено значение false. Я изменил его на true, чтобы пройти 401.2 в моем сценарии. Существует множество других ссылок на то, как найти applicationhost.config для IIS Express.

Kfrosty
источник
0

Я нигде не видел этого «полного» ответа; Я только что видел сообщение об изменении номеров портов после того, как опубликовал это, так что, да.

Убедитесь, что в свойствах вашего проекта в Visual Studio этот URL-адрес проекта не назначен тому же URL-адресу или порту, которые используются в IIS для любых привязок сайта.

Я ищу «почему» для этого, но я предполагаю, что и IIS, и IIS Express Visual Studio используют один и тот же каталог при создании виртуальных каталогов, а Visual Studio может создавать только новые виртуальные каталоги и не может изменять все, что IIS создал, когда применяет свои привязки к сайту.

не стесняйтесь поправлять меня, почему.

user1040975
источник
0

Наша страница с ошибкой находилась за страницей входа, но страница входа имела ошибку в одном из элементов управления, что создает бесконечный цикл.

Мы удалили все элементы управления с проблемной страницы и добавили их один за другим, пока нужный элемент не был найден и исправлен.

Атрон Сейдж
источник
0

В моем случае (приложение ASP.NET MVC 4) Global.asaxфайл отсутствовал. Он отображался в обозревателе решений с восклицательным знаком. Я заменил его, и ошибка исчезла.

Моисей Мачуа
источник