IIS Express надає помилку забороненого доступу при налагодженні ASP.NET MVC


102

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

Як це можна вирішити?

Помилка серверу в програмі '/'

Доступ заборонено. Опис: Під час доступу до ресурсів, необхідних для обслуговування цього запиту, сталася помилка. Сервер може бути не налаштований для доступу до запитуваної URL-адреси.

Повідомлення про помилку 401.2 .: Несанкціоноване: Вхід не вдалося через конфігурацію сервера. Переконайтеся, що у вас є дозвіл на перегляд цього каталогу чи сторінки на основі наданих вами даних даних та ввімкнених методів аутентифікації на веб-сервері. Для отримання додаткової допомоги зверніться до адміністратора веб-сервера.


3
чи використовуєте ви IISExpress без адміністративних пільг?
chandmk

2
Тому після удару головою про це деякий час я нарешті зрозумів, що це тому, що VS не встановив сторінку за замовчуванням і, очевидно, IISExpress.exe не дає списків папок, щоб зробити це очевидним.
Марк Аллен

Відповіді:


113

Якщо ви використовуєте Visual Studio, ви також можете клацнути лівою кнопкою миші на проекті в Провіднику рішень і змінити властивість автентифікації Windows на Увімкнено у вікні Властивості .


2
Це не характерно для Visual Studio 2012, це може бути зроблено принаймні на Visual Studio 2010.
Loïc Lopes

5
Працював для мене у VS 2013.
kaybee99

2
Вам також потрібно вимкнути анонімну автентифікацію.
Засклений

1
У провіднику рішень клацніть назву проекту під вузлом рішення, а потім перейдіть до вікна Властивості, там ви побачите властивість Windows Authentication встановити його на Enabled
sairfan

1
Я не бачу цього налаштування ніде у вікні властивостей. Я використовую VS 2015.
Марк Бонафі

99

Причиною цієї проблеми була IIS Express, яка не дозволяє WindowsAuthentication. Це можна активувати, встановивши

<windowsAuthentication enabled="true">

у файлі applicationhost.config, розташованому за адресою C: \ Users [ім'я користувача] \ Документи \ IISExpress \ config.


19
Visual Studio 2010 та 2012 можуть додавати це налаштування для вас за кожний проект, щоб глобальний параметр не був змінений зі свого замовчування, див. Stackoverflow.com/a/7168308/23566
Роберт Клейпул

Я намагаюся це налаштування, тому що я також отримую цю помилку в VS 2013 спортивно, давайте подивимось, чи допоможе це, я повідомляю вам.
Метт

2
Краще, якщо ви використовуєте% userprofile% \ dokumenti \ iisexpress \ config \ applicationhost.config. Моя була на D: (дякую Дену! Сьогодніparza.net/2014/09/… )
Джерамі Рутлі

Це єдине для мене рішення, велике спасибі!
Мохаммед Аніні

Спробував це у VS 2017, і це не вийшло. Рішення, розміщене Джейсоном, справді спрацювало.
мирослав

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) Встановіть "Анонімну автентифікацію" на "Вимкнено". b) Встановіть "Автентифікація 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
роком

@ user1016740 Я не впевнений, оскільки існує безліч можливостей / шляхів, які слід дотримуватися, щоб спробувати вирішити цю проблему. Описані тут кроки вирішили це в моєму середовищі, яке, на мою думку, відрізняється від вашого.
Леніел Маккаферрі

8

У моєму випадку попередній запуск мого додатка від VS зарезервував URL-адресу. Я міг це бачити, бігаючи в консоль:

netsh http show urlacl

щоб видалити це застереження, я запустив це на піднятій консолі:

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

Я знайшов, що ці кроки тут вирішили мою проблему.

Я використовую VS2013


Це дуже зручно, якщо ви коли-небудь редагували свою applicationhost.config для запуску сайту на кількох портах одночасно. Видалення записів із .config не знімає жодних застережень у netsh. Спасибі людина.
Дусда


3

У мене була така ж проблема, і нарешті я змогла її подолати.

Solution ExplorerRight click on projectPropertiesWeb tabProject Url

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


1

Ніщо з перерахованого вище не працювало для мене. Це працювало для мене до сьогодні. Тоді я зрозумів, що працюю над створенням хостинг-зв’язку на своєму ноутбуці, і поділив Інтернет-зв’язок із моїм бездротовим мережевим підключенням.

Щоб виправити свою проблему:

Перейдіть до Панелі управління> Мережа та Інтернет> Мережеві з'єднання

Клацніть правою кнопкою миші на будь-якому вторинному підключенні до бездротової мережі (мій названий бездротовим мережевим з'єднанням 2) та натисніть "Властивості".

Перейдіть на вкладку "Спільний доступ" вгорі.

Зніміть прапорець у полі "Дозволити іншим користувачам мережі підключитися через Інтернет-з'єднання цього комп'ютера".

Натисніть ОК>, а потім застосувати.

Сподіваюся, це допомагає!


1

Я відкрив свій файл web.config і знайшов та видалив цей розділ:

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

і мій сайт з’явився, але є проблеми з автентифікацією ..


Гаразд, це допомогло вирішити проблему, але тепер у мене є деякі інші проблеми, які мені потрібно виправити.
Джамшайд Камран

0

Я щойно вирішив цю точну проблему в IIS EXPRESS, виправивши її, відредагувавши хост програми .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>

0

Я боровся з цією проблемою, намагаючись створити простий додаток для SharePoint за допомогою постачальника хостингу.

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


0

Я ніде не бачив цієї "повної" відповіді; Я щойно бачив той про зміну номерів портів після того, як я опублікував це, так що мені.

Переконайтеся, що у ваших властивостях проекту у візуальній студії URL-адреса проекту не призначається тому самому URL-адресу або порту, який використовується в IIS для будь-яких прив'язок сайту.

Я шукаю "чому" для цього, але моє припущення вгорі голови полягає в тому, що і IIS, і IIS Express Visual Studio використовують один і той же каталог під час створення віртуальних каталогів, а Visual Studio може створювати лише нові віртуальні каталоги та не може змінювати будь-який створений IIS, коли він застосовує його прив'язки до сайту.

не соромтеся виправити мене з приводу.


0

Наша сторінка помилок була за сторінкою входу, але на сторінці входу була помилка в одному з елементів керування, що створює нескінченний цикл.

Ми видалили всі елементи керування зі сторінки, яка порушує правопорушення, і додали їх по черзі, поки правильний елемент керування не був знайдений і не зафіксований.


0

У моєму випадку (додаток ASP.NET MVC 4) Global.asaxфайл відсутній. Він з'явився в Solution explorer зі знаком оклику. Я його замінив і помилка пішла.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.