对 IIS Express 的第一次请求失败,错误代码为 503 服务不可用,第二次请求成功

对 IIS Express 的第一次请求失败,错误代码为 503 服务不可用,第二次请求成功

每次我从 Visual Studio 2010 启动 ASP.Net MVC 3 应用程序时,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>

我的主机文件中有这个:

127.0.0.1    laptop

我的项目设置为从 IIS Express 启动,项目网址设置为:

http://laptop

很奇怪,只有第一个请求失败,也许是因为 Visual Studio 没有等待足够长的时间让 IIS Express 启动?有什么方法可以让它等待吗?

停止调试、进行更改,然后重新开始是我最常执行的任务之一,因此添加另一个步骤来实现这一点非常烦人。

答案1

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

包含站点代码、web.config 等的项目文件夹的文件系统路径在哪里[PATH],例如在您的情况下它将是:

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

如果 IIS Express 第一次无法启动该站点,这可能会引发一些有趣的错误。

顺便说一下,您还可以告诉 Visual Studio“附加到进程”并以此方式开始调试。

答案2

您需要采取的首要行动是确定实际发生的情况。

为此,请打开本地请求的详细错误页面:

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

现在,所有 400 和 500 类 http 返回都将导致 IIS 显示更详细的错误页面。

相关内容