我们刚刚在生产中部署了一个ASP.NET MVC 4 webapp并正在尝试一种奇怪的行为:该应用程序正常运行,但图像未显示且部分CSS未加载。
在分析HTTP请求时,我可以看到:
应用程序在我们的Dev / Integration / Staging和Pre-Prod环境中正常工作,所以我希望它是一些IIS配置技巧....
我们已经检查过:
我应该补充说,还配置了一些旧的HTTP模块(如果未经过身份验证,他们负责将用户重定向到某个登录页面......)
(我不知道这是否相关,但是当访问其根Url(虚拟目录)而没有尾随斜杠时,应用程序失败且HTTP状态为401 ...即https://{the domain}/{WebApp Name}
失败但https://{the domain}/{WebApp Name}/
工作正常)
有关可能发生的事情的任何线索?
谢谢!
答案 0 :(得分:7)
我终于弄清楚了......
我必须更改默认的“传递身份验证”,指定本地执行不是“经过身份验证的用户”(在这种情况下是IUSR)。
在IIS中的WebApp基本设置中,请勿使用“pass-throuh”身份验证,请使用“连接为”
答案 1 :(得分:7)
] 2
我能够修复它.. 1.导航到IIS中具有css文件的文件夹 2.双击“功能视图”上的“身份验证”图标 3.右键单击图中所示的匿名验证,然后选择编辑 4.选择“应用程序池标识”选项,如图所示 5.停止并启动IIS
答案 2 :(得分:0)
HTTP 401:未经授权
这意味着您的图片和css文件位于需要授权的文件夹中,并且网站用户无权查看它们。
您可以使用:
web.config
location
元素web.config
,并允许匿名访问Setting authorization rules for a particular page or folder in web.config
答案 3 :(得分:0)
在这个问题上也很挣扎......在我的共享视图中使用@ Styles.Render(“Location_and_Name_of_CSS_file”)而不是HTML“链接”标记来解决它
希望这有助于某人
答案 4 :(得分:0)
在我的情况下,以上都不足以解决问题。花了将近一整天的时间后,我发现我还必须更改我的视图以使用@Url助手。
我之前:
<img src="/Home/RetrieveImage" alt="" width="200" height="200">
如果我通过直接Url http://localhost/{applicationname}/Home/RetrieveImage
访问但未按原样加载索引视图(错误401),则会有效。
我把它改为:
img src="@Url.Action("RetrieveImage")" alt="" width="200" height="200"
问题得到解决。
答案 5 :(得分:0)
要通过传递身份验证进行此操作:
尽管将应用程序池设置为用户NetworkService,但本地\用户还需要对物理路径的读取权限。
答案 6 :(得分:-1)
您也可以尝试以管理员身份运行IIS。