Подтвердить что ты не робот

Не удается запустить Simple ASP.NET MVC-приложение с Visual Studio 2015 из IIS (Internal Server 500)

  • 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 >

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

Итак, теперь я застрял и не знаю, что еще делать.

4b9b3361

Ответ 1

TL; DR

Прежде чем читать оставшуюся часть ответа, вероятно, вам просто нужно запустить aspnet_regiis, который вы можете сделать с помощью cmd или с помощью классного инструмента в установщике веб-платформы, если вы будете искать "ASP.NET" там является удобным "Выполнить инструмент регистрации ASP.NET IIS", который вы можете установить.

Исходный ответ:

Спасибо за помощь всем, прежде всего я должен был сделать шаг назад и протестировал тестовый файл index.html "Hello World" с веб-сайта IIS с помощью c:\inetpub\wwwroot в качестве физического пути веб-сайт IIS.

При первой установке IIS у вас есть веб-сайт по умолчанию, перейдите к нему и убедитесь, что он работает. Отличный первый запуск новой машины. Но я просто удалил этот сайт IIS после установки IIS

Шаги, которые я взял для исправления:

  • Я удалил IIS через Панель управления → Программы и функции → Возможности системы Windows.
  • Перезагрузили компьютер.
  • Установлен IIS для Windows 10 после этого document
  • Протестированный IIS, создав веб-сайт, используя DefaultAppPool, а затем просматривая localhost, и это сработало (опять же, когда вы впервые устанавливаете IIS, у вас есть этот сайт, но я удалил его на пару пару дней назад).
  • Я обнаружил, что мой простой веб-сайт ASP.NET по-прежнему не работает, и он был опубликован в c:\inetpub\wwwroot\AspNetMvcTest, так что это не было проблемой для прав на доступ к папкам. При просмотре вместо загрузки моего веб-сайта ASP.NET IIS перенаправлен в корневой каталог c:\inetpub\wwwroot и отобразился его страница приветствия IIS ( "iisstart.htm" ).
  • Это означает, что мне нужно было запустить aspnet_regiis, что я и сделал, используя классный инструмент в установщике веб-платформы, если вы ищете "ASP.NET", есть удобный инструмент "Execute ASP.NET IIS Registration", который вы можете установить.
  • Вот и все, я все настроен, ASP.NET MVC Website начал работать с IIS сразу после обновления моего браузера (localhost в строке местоположения).

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

Ответ 2

Я думаю, что основная проблема заключается в том, что для веб-сайта ASP.NET MVC 5 требуется, по крайней мере,.NET Framework 4.5. Из предоставленной вами информации в пуле приложений вашего веб-приложения использовался .NET 4.0. Похоже, вы еще не зарегистрировали ASP.NET 4.5 со своим IIS.

Чтобы зарегистрировать ASP.NET 4.5 с помощью IIS, вы можете использовать командную строку Visual Studio (в качестве администратора), перейдите в следующий каталог и запустите commmand aspnet_regiis.exe -i

C:\Windows\Microsoft.NET\Framework64\v4.5.<version>

После успешного регистрации ASP.NET 4.5 с помощью IIS измените ваше веб-приложение на использование пула приложений .NET 4.5.