为啥 IIS 返回空响应?

Posted

技术标签:

【中文标题】为啥 IIS 返回空响应?【英文标题】:Why does IIS return empty responses?为什么 IIS 返回空响应? 【发布时间】:2015-08-25 08:09:11 【问题描述】:

我刚刚使用 文件系统发布 将 AngularJS/WebAPI 项目发布到本地 IIS 应用程序,我可以在浏览器中打开该网站。不幸的是,无法加载图像、css 等资源。当我尝试访问位于子文件夹中的任何文件时,我仍然从服务器收到 HTTP 200,但正文为空。我记得几年前我遇到过这个问题,但我不记得为什么会这样。

请求

GET http://localhost/Content/images/common/logotype.png HTTP/1.1
Host: XX.XXX.XX.XXX
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,sv;q=0.6

回应

HTTP/1.1 200 OK
Server: Microsoft-IIS/8.5
X-Powered-By: ASP.NET
Date: Tue, 25 Aug 2015 07:56:12 GMT
Content-Length: 0

如您所见,根本没有正文,但图像存在于文件夹中,我可以从文件系统中打开它。我猜如果这是一个权限问题,服务器会返回 403 或类似的错误,而不是 200 OK?

【问题讨论】:

或许可以尝试将image/png 添加到您的Accept 标头中,看看您是否能恢复内容? 是SPA吗?如果是 - 你能显示你的 webconfig 吗? 是的,我想这是一个有角度的 SPA,但出于隐私原因,我无法提供整个 web.config。也许我可以提供一个感兴趣的特定部分? 你能检查一下本地文件夹的权限吗?运行应用程序池的用户需要对包含图像的文件夹具有权限 您启用了哪些 IIS 功能? 【参考方案1】:

护脸

事实证明,Lex Li:s 的评论把我引向了正确的方向。我完全错过了在 IIS“通用 HTTP 功能”中包含“静态内容”功能。

【讨论】:

哇。只是有同样的问题。这不是你看到的,因为你知道......“常见的 http 功能”......

以上是关于为啥 IIS 返回空响应?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Symfony Mailer 组件返回一个空响应?

为啥不能通过 IIS7 中的 web.config 删除“服务器”响应标头?

Spyne:为啥我收到 json 请求的空响应?

为啥我从这个请求 iOS JSON 得到空响应

Paypal IPN 协议:为啥示例中没有发送空的 HTTP 200 响应?

如何强制 IIS7 返回 Tomcat 错误响应