Помилка HTTP 403.14 - Заборонено - MVC 4 з IIS Express

Це схоже на запитання, на яке вже не раз зверталися/відповідали. Це не.

Development Environment: VS 2012 and MVC 4. I am using the built in IIS Express to run the app.

Ця помилка не відбувалася до вчорашнього дня. Це раптом почало відбуватися, і я застряг. Його дивно, що це відбувається тільки в одному сценарії.

Коли я намагаюся отримати доступ до http://localhost: 49962/managecholars/, він показує мені помилку

HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.

Але за допомогою http://localhost: 49962/managecholars/Index працює нормально. Інші методи дії одного контролера також працюють нормально. наприклад, http://localhost: 49962/managecholars/create . Всі інші контролери також відмінно працюють.

Я спробував додати наступне до web.config.


  
  
  

Я також спробував виконати наступну команду як адміністратор

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

Але жоден з них не працював.

Редагувати:

Я змінив маршрути. Вони виглядають наступним чином.

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "ManageScholarLectures",
            url: "Manage/Lectures/{userFriendlyName}",
            defaults: new { controller = MVC.ManageLectures.Name , 
                            action = MVC.ManageLectures.ActionNames.Index, 
                            userFriendlyName = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "ManageScholarEdit",
            url: "Manage/Scholars/{userFriendlyName}",
            defaults: new { controller = MVC.ManageScholars.Name, 
                            action = MVC.ManageScholars.ActionNames.Edit }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = MVC.Home.Name, 
                            action = MVC.Home.ActionNames.Index, 
                            id = UrlParameter.Optional }
        );
    }

Я використовую шаблон T4MVC .

Він як і раніше не працює, навіть якщо я залишу маршрут по замовчуванню внизу і видалити перші два маршрути. Що я зробив неправильно?

Заздалегідь вдячні вам за допомогу.

16
Ви нещодавно змінили щось на своїх маршрутах? Це було б перше місце, яке я б подивився.
додано Автор George Johnston, джерело
Я зіткнувся з цією проблемою, тому що я мав папку в корені мого проекту MVC, який мав таку ж назву, що і область. Прийнята відповідь також зафіксувала це питання.
додано Автор Greg Burghardt, джерело
Так. ти правий. Нещодавно я змінив маршрути. Я відредагував своє запитання та включив метод RegisterRoutes
додано Автор Aamir, джерело
Маршрути за замовчуванням повинні мати URL-адресу контролера до його індексної сторінки, якщо ви не змінили її
додано Автор Jonesopolis, джерело

7 Відповіді

Ваші маршрути здаються прекрасними. Це не повинно викликати жодних проблем. Помилка трапляється лише на http://localhost: 49962/managecholars/, що означає, що може бути інший ресурс з однаковою назвою. Чи можете ви переконатися, що код не помилково створює папку managecholars під час виконання? "

57
додано
Велике спасибі. Це справді була проблема. Я помилково написав код, який міг би зберегти файл і створити папку. Це створило "керуючіколори", що викликало проблему.
додано Автор Aamir, джерело
Використовуючи Server.MapPath (.....), він буде використовувати шлях маршрутизації як папки (назва області і так далі), і якщо ви створили папку, вона створить її, починаючи з кореневого шляху вашого веб-сайту, це може призвести до проблеми з маршрутизацією ...
додано Автор Mohamed Sakher Sawan, джерело
Ви маєте рацію, у мене є така ж проблема.
додано Автор Brijesh Mavani, джерело
Ідеальна відповідь, були ті ж проблеми з "/ продукти" маршрутизації, і так, у мене була фізична папка і контролер під назвою "продукти", видалені папки і бінго! дуже дякую!
додано Автор Nestor, джерело
Так! Фізична папка також була моєю проблемою.
додано Автор Donnelle, джерело
відмінно, дякую. дуже гарна точка.
додано Автор farid bekran, джерело

По-перше, я припускаю, що

 http://localhost:49962/managescholars/

насправді

 http://localhost:49962/manage/scholars/

. Якщо не є ваша проблема :)

Я не експерт з маршрутів, але у вашому маршруті для Scholars параметр userFriendlyName не є необов'язковим, що означає, що http://localhost: 49962/manage/scholars/ не відповідатиме жодному з ваших правил, а IIS розглядатиме запит на перелік вмісту папки.

1
додано

Я зіткнувся з тією ж проблемою. Вирішити дуже просто.

Ця проблема виникає через конфлікт IIS Express під час редагування властивостей URL-адреси "Захистити" в параметрах проекту. Вирішити цю проблему дуже просто:

1 - Шукайте файл "applicationhost.config" у каталозі ".vs. Config". Ця папка знаходиться в корені рішення. Його можна відкрити за допомогою програми Notepad ++

2 - Пошук назви вашого елемента керування за допомогою 'find' вашої програми (Ctrl + F). У моєму випадку контролем, який давав проблему, були «Офіси».

3 - Видалити будь-який вузол, на якому ви розміщуєте налаштування IIS для такої URL-адреси. Див. Приклад нижче:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

    
                
                    
                    
                    
                
                
                    
                
                
                    
                
            
</div> </div>

Ви повинні видалити кожен елемент


Примітка: Зробіть резервну копію файлу перед внесенням змін.

Обійми

1
додано
Це те, що відбувається більшу частину часу і через це ви отримаєте заборонену помилку.
додано Автор Ali Shahrokhi, джерело

Великий !! У моєму випадку це було тому, що я налаштував програму для запуску в неправильному URL-адресі, але коли я повернувся до правильного, погляд не перевищив applicationhost.config.

Як я вже говорив вище, мені вдалося вирішити ці кроки.

1
додано
Ви могли просто відредагувати свою іншу відповідь і додати її замість нової відповіді.
додано Автор Robin Topper, джерело

У моєму випадку, з Visual Studio 2015, я вирішив проблему з наступними кроками:

  • Зупинити службу IIS Express
  • Закрити Visual Studio
  • Видаліть файл applicationhost.config в {мій каталог} .vs. config
  • Видалення документів каталогу IISExpress
  • Почати VS, F5 і насолоджуватися :)
0
додано

Я знаю, що відповідь на оригінальне запитання відповідає, але в моєму випадку працював нижче. Я отримав точно таку ж проблему на VS2013 за допомогою IIS Express. У моєму випадку відвідування/Логін не отримувало дії Index в LoginController. Не було жодної фізичної папки, коли я перевіряв, але після більшого копання я знайшов віртуальний каталог, створений на шляху IIS Express for/Login, що спричинило це. Видаляю віртуальну директорію з конфігурації applicationhost (конфігурація Documents IISEpress), щоб вирішити проблему.

0
додано

У випадку, якщо хтось отримає таку ж проблему, що я отримав, і ввійдіть на цю сторінку. Якщо веб-сайт налагодження працює, але не на одному веб-сайті:

Перевірте зміни на global.asax Перевірте, чи конфігурація маршруту все ще існує ...

Я знаю, що це німий, але втрачений через 6 годин після злиття git ...

0
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug