Asp.net mvc 静态图像和CSS不显示(401),但绑定了CSS和js

Asp.net mvc 静态图像和CSS不显示(401),但绑定了CSS和js,asp.net-mvc,asp.net-mvc-4,iis,Asp.net Mvc,Asp.net Mvc 4,Iis,我们刚刚在生产中部署了一个ASP.NET MVC 4 Web应用程序,正在试验一种奇怪的行为:该应用程序可以工作,但图像不显示,部分CSS不加载 在分析HTTP请求时,我可以看到: 图像(*.png)请求失败,状态代码为401 请求css文件失败,状态代码为401 对捆绑资源(*.js/*.css)的请求成功 该应用程序在我们的Dev/Integration/Staging和Pre-Prod环境中正常工作,因此我希望它是一些IIS配置技巧 我们已经检查过: IIS中仅启用匿名身份验证 II

我们刚刚在生产中部署了一个ASP.NET MVC 4 Web应用程序,正在试验一种奇怪的行为:该应用程序可以工作,但图像不显示,部分CSS不加载

在分析HTTP请求时,我可以看到:

  • 图像(*.png)请求失败,状态代码为401
  • 请求css文件失败,状态代码为401
  • 对捆绑资源(*.js/*.css)的请求成功
该应用程序在我们的Dev/Integration/Staging和Pre-Prod环境中正常工作,因此我希望它是一些IIS配置技巧

我们已经检查过:

  • IIS中仅启用匿名身份验证
  • IIS池用户具有对资源的读取权限
我应该补充的是,还配置了一些旧的HTTP模块(如果用户未通过身份验证,它们负责将用户重定向到某个登录页面…)

(我不知道这是否相关,但当访问其根Url(虚拟目录)时,应用程序在HTTP状态401下失败,没有尾随斜杠…即
https://{the domain}/{WebApp Name}
失败,但
https://{the domain}/{WebApp Name}/
工作正常)

关于可能发生的事情有什么线索吗


谢谢

HTTP 401:未授权

这意味着您的图像和css文件位于需要授权的文件夹中,而网站用户无权查看它们

您可以使用:

  • 列表项
    web.config
    location
    元素
  • 或者为css和图像文件夹创建特定的
    web.config
    ,并允许匿名访问

我终于可以弄明白了

  • 已启用匿名身份验证(并使用默认配置,这意味着代码看到的用户就是用户IUSR)
  • web应用程序的文件不是存储在安装IIS的本地,而是存储在某种网络共享驱动器上
  • 在这种情况下,IUSR没有读取权限,因此无法读取静态资源
  • 我必须更改默认的“传递身份验证”,指定本地执行不是作为“已验证用户”(在这种情况下是IUSR)执行的

    在IIS中的WebApp基本设置中,不要使用“通过”身份验证,请使用“连接为”


    也在努力解决这个问题。。。通过在我的共享视图中使用@Styles.Render(“Location_和_Name_of_CSS_文件”),而不是HTML“link”标记,解决了这个问题


    希望这对某人有所帮助

    在我的情况下,上述任何一项都不足以解决问题。在花了几乎一整天的时间之后,我发现我还必须改变我的视图以使用@Url helper

    在我之前:

    <img src="/Home/RetrieveImage" alt="" width="200" height="200">
    
    问题得到了解决。

    ]

    我能用……把它修好。。 1.导航到IIS中包含css文件的文件夹 2.双击“功能视图”上的“身份验证”图标 3.右键单击匿名身份验证,如图所示,然后选择编辑 4.选择“应用程序池标识”选项,如图所示
    5.停止并启动IIS

    以使其通过直通身份验证工作:

    • 打开物理路径并添加“网络服务和[本地计算机]\Users”的读取权限

    尽管应用程序池已设置为用户NetworkService,但本地\用户还需要对物理路径的读取权限。

    您也可以尝试以管理员身份运行IIS

    img src="@Url.Action("RetrieveImage")" alt="" width="200" height="200"