每次我从 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 显示更详细的错误页面。