Ошибка HTTP 403.14 - Запрещено - MVC 4 с IIS Express
Это похоже на вопрос, который уже неоднократно задавался/отвечал. Его нет.
Среда разработки.
VS 2012 и MVC 4. Я использую встроенный IIS Express для запуска приложения.
Эта ошибка не была до вчерашнего дня. Это внезапно начало происходить, и я застрял. Странно, что это происходит только в ОДНОМ сценарии.
Когда я пытаюсь получить доступ к http://localhost:49962/managescholars/
, он показывает мне ошибку
HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.
Но использование http://localhost:49962/managescholars/Index
отлично работает. Другие методы действий одного и того же контроллера также работают нормально. таких как http://localhost:49962/managescholars/create
. Все остальные контроллеры работают нормально.
Я попытался добавить в web.config следующее.
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true" />
<handlers/>
</system.webServer>
Я также попробовал запустить следующую команду как администратор
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
Но никто из них не работал.
Edit:
Я изменил свои маршруты. Они выглядят следующим образом.
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
.
Он по-прежнему не работает, даже если я оставляю маршрут по умолчанию внизу и удаляю первые два маршрута. Что я сделал неправильно?
Большое спасибо за вашу помощь.
Ответы
Ответ 1
Ваши маршруты кажутся прекрасными. Это не должно вызывать никаких проблем. Ошибка возникает только на http://localhost:49962/managescholars/
, что означает, что может быть другой ресурс с тем же именем.
Можете ли вы убедиться, что ваш код не ошибочно создает папку managescholars во время выполнения? "
Ответ 2
Во-первых, я предполагаю, что
http://localhost:49962/managescholars/
на самом деле
http://localhost:49962/manage/scholars/
. Если нет вашей проблемы:)
Я не эксперт по маршрутам, но на вашем маршруте для Scholars
параметр userFriendlyName
не является необязательным, что означает, что http://localhost:49962/manage/scholars/
не будет соответствовать ни одному из ваших правил, и IIS будет обрабатывать запрос укажите содержимое папки.
Ответ 3
В случае, если кто-то получит ту же проблему, что и я, и введите эту страницу.
Если веб-сайт отладки работает, но не на одном веб-сайте:
Проверить модификацию на global.asax
Проверьте, сохраняется ли конфигурация маршрута...
Я знаю, что он немой, но потерял через 6 часов после слияния git...
Ответ 4
Я знаю, что на исходный вопрос ответил, но ниже работал в моем случае.
Я получил то же самое на VS2013, используя IIS Express. В моем случае посещение /Login не получало действие Index в LoginController. Когда я проверил, физической папки не было, но после большего поиска я обнаружил, что в пути IIS Express для /Login был создан виртуальный каталог, который вызвал это. Я удалил виртуальный каталог из confighosthost (Documents\IISExpress\config), чтобы решить проблему.
Ответ 5
Я столкнулся с той же проблемой. Решение очень просто.
Эта проблема возникает из-за конфликта IIS Express при редактировании свойств в URL-адресе защиты в настройках проекта.
Для решения этой проблемы очень просто:
1 - Найдите файл "applicationhost.config" в каталоге ".vs\config". Эта папка находится в корне решения. Вы можете открыть его с помощью Notepad ++
2 - Найдите имя своего элемента управления, используя 'find' вашей программы (Ctrl + F). В моем случае контроль, который дал проблему, был "Офисы".
3 - Удалите любой node, где вы поместите параметры IIS для такого URL-адреса. См. Пример ниже:
<site name="G4.Admin(1)" id="8">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Projetos\PortalG4\src\G4.Admin" />
<virtualDirectory path="/Offices/Edit" physicalPath="C:\Projetos\PortalG4\src" />
<virtualDirectory path="/Offices" physicalPath="C:\Projetos\PortalG4" />
</application>
<application path="/Offices/Edit/2" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Projetos\PortalG4\src\G4.Admin" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:6920:localhost" />
</bindings>
</site>
Ответ 6
Отлично!
В моем случае это было связано с тем, что я настроил приложение на запуск неправильного URL-адреса, но когда я вернусь к правильному, внешний вид не подавил приложение applicationhost.config.
Как я уже говорил выше, мне удалось решить эти шаги.
Ответ 7
В моем случае с Visual Studio 2015 я решил проблему со следующими шагами:
- Остановить IIS Express
- Закрыть Visual studio
- Удалить файл applicationhost.config в {my solution directory}.vs\config
- Удалить каталог Документы \IISExpress\config
- Запустите VS, F5 и наслаждайтесь:)