- Windows 10 Professional
- IIS 10
- Visual Studio 2015 (работает как администратор)
Я хочу запускать из IIS вместо IIS Express, поскольку у меня есть внешний IP-адрес, указывающий на мою машину, и я получаю сообщения от внешнего источника. В конечном итоге я буду использовать WebAPI, но для тестирования и настройки IIS я использую простое веб-приложение ASP.NET MVC 5.
Я создал новое веб-приложение ASP.NET MVC 5, это скелет Visual Studio 2015 MVC Template, затем я запустил приложение с помощью IIS Express, никаких проблем:
Затем я отправился в IIS 10 и создал новый сайт с "localhost" в качестве привязки:
Физический путь для этого нового веб-сайта в IIS составляет C:\inetpub\wwwroot\AspNetMvcTest
:
Затем я перешел к свойствам веб-приложения и переключился на IIS. Меня спросили, хочу ли я создать новый виртуальный каталог:
Я нажал Да, если вы нажмете Нет, операция будет отменена, а вы - несохраненные Свойства веб-приложения. Вам нужно нажать Да, чтобы перейти в локальное свойство IIS в Visual Studio.
Затем мне сказали, что "localhost" IIS сопоставлен с другой папкой и хотел бы переназначить:
Я нажал Да. Если вы нажмете Нет, у вас снова будут изменены несохраненные свойства веб-приложения, и вы не будете использовать локальный IIS в Visual Studio.
Интересно, что Visual Studio пытается изменить "Виртуальный каталог" , потому что он фактически изменит физический путь веб-сайта IIS, не добавив виртуальный каталог. Виртуальный каталог - это папка, где-то за пределами физического пути веб-сайта IIS, который IIS будет рассматривать как часть папки Physical Path. Но я отвлекаюсь.
Теперь мне говорят, что "Виртуальный каталог" был успешно создан:
Теперь мы можем посмотреть на изменения Visual Studio 2015, сделанные для IIS 10:
У нас нет виртуальных каталогов на сайте, привязанных к localhost:
Мой физический путь был изменен Visual Studio 2015 и сопоставлен с моим каталогом, в котором находится мое простое веб-приложение ASP.NET MVC 5:
Итак, хотя Visual Studio 2015 использует "Виртуальный каталог" при изменении свойств веб-приложения ASP.NET MVC 5, Visual Studio 2015 был связан только с физическим путем, и это единственное, что изменилось в IIS, что я могу см.
Теперь для внутренней ошибки сервера 500 Подробнее
Я нажимаю F5 в Visual Studio 2015, а F12 Tools говорит, что есть ошибка внутреннего сервера 500:
Если мы проверим запрос и ответ в Fiddler, там ошибка 500 имеет длину контента = 0
Чтобы попытаться получить более подробную информацию о ошибке 500, я отключил пользовательские ошибки в моем Web.Config, а также добавил httpErrors Detailed и PassThrough:
Я добавил обработку исключений "catch all" в Global.asax, без точки останова :
Вот мой стек вызовов, который пуст, и ни одна точка останова в скриншоте никогда не попадает:
Я добавил консольное приложение в мое решение как "Set As Startup Project", и вот мой стек вызовов, доказывающий, что точка останова может быть удалена:
Вот скриншот Event Viewer → Application, я очистил журнал приложений, нажал F5 в Visual Studio 2015, обновил журнал приложений, и он еще пуст:
Я думал, что проблема связана с разрешениями папки после того, как Visual Studio изменила физический путь
Итак, я добавил IIS_IUSRS
и дал полный доступ, даже если Учетная запись не нуждается в таком высоком уровне разрешения для каталога Physical Path:
My ApplicationPoolIndentity - это Framework v4.0 и ApplicationPoolIdentity. Приложению ApplicationPoolIdentity назначается членство в группе Users, а также группа IIS_IUSRS:
Я попытался добавить конкретный пул приложений к свойствам безопасности приложения ASP.NET MVC Physical Directory, поэтому сначала я обнаружил, что процесс Visual Studio F5 был присоединен к:
Я добавил "DefaultAppPool" и мой пул приложений IIS "IIS APPPOOL\AspNetMvcTest" в "Безопасность физической папки".
Я добавил index.html в физическую папку веб-приложения, и это не работает:
<html>
<head>
</head>
<body>
<h4 style="color: black">hello world</h4>
</body>
</html>
Я переместил веб-сайт IIS Physical Path в inetpub/wwwroot обратно в каталог, который я создал при создании веб-сайта, я даже не могу просмотреть простой HTML файл, я получаю такую же пустую ошибку 500 >
Итак, теперь я застрял и не знаю, что еще делать.