Не удается запустить класс запуска OWIN в IIS Express после переименования файла проекта ASP.NET
У меня возникла ситуация, когда мне нужно было изменить название решения и проекта на веб-сайте WebAPI на основе OWIN. До этого изменения все работало отлично, и, насколько мне известно, переименование прошло успешно из-за следующего:
- Решение прекрасно работает, и все мои модульные тесты успешно работают как локально, так и на нашем сервере сборки TeamCity.
- Приложение отлично работает на нашем тестовом сервере (полный IIS 8) и в производственном режиме (также полный IIS 8)
Моя проблема в том, что после этого переименования я не могу заставить класс Startup выполняться при запуске этого в IIS Express, независимо от того, что я пытаюсь. Я подозреваю, что на моей машине есть какая-то кэшированная папка, содержащая несколько классов Startup, потому что в нашей тестовой среде мне нужно было удалить все старые библиотеки DLL, которые использовали предыдущее имя, прежде чем все заработало.
Я знаю, что запуск не выполняется, потому что у меня есть точки останова, которые не запускаются (и на самом деле не включены, потому что VS не видит загруженные символы):
Вот что я пробовал до сих пор:
- Удалите IIS Express 10.0 (у меня на компьютере разработчика VS 2015 RC), очистите все папки IIS, затем переустановите IIS Express 8
- Вычистил все временные папки ASP.NET на моем компьютере разработчика
- Вычистил все папки obj/bin в моем собственном решении
В моем случае я указываю класс Startup с помощью следующего в моем Startup.cs:
[assembly: OwinStartup(typeof(Startup))]
... но опять же, все это работало просто отлично, прежде чем я попытался переименовать решение и проекты. Я не думаю, что это общая проблема IIS Express, потому что я могу успешно запускать другие решения на основе OWIN локально (например, нашу реализацию IdentityServer3) без проблем... хотя это решение не требовало никаких изменений имени.
Есть ли какой-то другой аспект использования IIS Express, который может сработать при изменении имени решения или файла проекта?
Для справки я уже рассмотрел следующие возможные причины (без какой-либо удачи): - OwinStartup не запускается... Почему? - Отсутствует класс запуска OWIN - Очистка временных файлов ASP.NET - Не запускается OwinStartup
2 ответа
Хотя я не могу полностью объяснить, почему это решает проблему, я смог это исправить, изменив свои проекты на обычные bin/
папка.
Я прошу прощения за то, что не упомянул об этом в моем первоначальном вопросе, потому что я не думал, что это уместно, но я ранее изменил свой проект ASP.NET, чтобы собрать bin\Debug
а также bin\Release
в зависимости от конфигурации. Это, казалось, работало просто отлично, но вызвало эту проблему, как только я изменил название проектов.
Я знаю, что это старый, но просто хотел добавить, что я наткнулся на это, используя пользовательский шаблон. В моем случае у меня было рабочее решение со стартапом, я сделал его шаблоном, но шаблон не работал.
Приходите, чтобы узнать, это потому, что у нового проекта было место в названии. Итак, добавление
[assembly: OwinStartup(typeof(myProjectName.Startup))]
к моему существующему файлу автозапуска это исправили.