Назад | Перейти на главную страницу

Первый запрос к IIS Express терпит неудачу, 503 Service Unavailable, второй успешный

Каждый раз, когда я запускаю приложение ASP.Net MVC 3 из Visual Studio 2010, запускается IIS Express, и IE запускается в ожидании. Запрос не выполняется: служба HTTP 503 недоступна. Я нажимаю «Обновить» в IE, и запрос выполняется. Все последующие запросы выполняются, пока я не перестану отлаживать. В следующий раз, когда я приступлю к отладке, первый запрос снова завершится ошибкой.

Кто-нибудь еще испытал это?

В IISExpress \ applicationhost.config у меня есть:

<site name="ProjectName" id="6">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="c:\users\chris\dropbox\code\2010\SolutionName\ProjectName" />
    </application>
    <bindings>
            <binding protocol="http" bindingInformation="*:80:laptop" />
    </bindings>
</site>

У меня есть это в моем файле hosts:

127.0.0.1    laptop

И мой проект настроен на запуск с IIS Express, с URL-адресом проекта:

http://laptop

Очень странно, что не удается выполнить только первый запрос, возможно, как будто Visual Studio недостаточно долго ждет запуска IIS Express? Есть ли способ заставить его подождать?

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

IIS Express поддерживает Отслеживание неудачных запросов и он включен по умолчанию. Журналы записываются в %IIS_USER_HOME%\TraceLogFiles который обычно находится в этом месте:

%USERPROFILE%\Documents\IISExpress\TraceLogFiles

В этой папке вы увидите список подпапок для каждого из проектов, запущенных в IIS Express. В папке каждого сайта должна быть куча frXXXXX.xml файлы и freb.xsl файл.

Используя Firefox или Internet Explorer, откройте frXXXXX.xml файл (ы) с меткой времени, наиболее близкой к моменту получения этих ошибок 503. После открытия вы увидите что-то вроде следующего:

Надеюсь, вы обнаружите причину ошибки 503.

Вы также можете попробовать и запустить IIS Express для вашего проекта вручную из командной строки:

C:\Program Files (x86)\IIS Express>iisexpress /path:"[PATH]" /port:16444

куда [PATH] - это путь файловой системы к папке вашего проекта, содержащей код сайта, web.config и т. д., например, в вашем случае это будет:

c:\users\chris\dropbox\code\2010\SolutionName\ProjectName

Это может вызвать некоторые интересные ошибки, если IIS Express не может запустить сайт в первый раз.

Кроме того, вы также можете указать Visual Studio «Присоединиться к процессу» и таким образом начать отладку.

Первое и самое главное действие, которое вам нужно предпринять, - это определить, что на самом деле происходит.

Для этого включите подробные страницы ошибок для локальных запросов:

appcmd.exe set config -section:system.webServer/httpErrors -errorMode:DetailedLocalOnly /commit:apphost

Теперь все возвращаемые http классы 400 и 500 заставят IIS отображать гораздо более подробную страницу ошибки.