CSS 未应用于未经身份验证的 ASP.NET 页面

Posted

技术标签:

【中文标题】CSS 未应用于未经身份验证的 ASP.NET 页面【英文标题】:CSS not being applied on non authenticated ASP.NET page 【发布时间】:2010-09-08 12:12:17 【问题描述】:

在开发(实时运行)时,我们网站的页面在用户通过身份验证(登录)之前不会选择正确的 CSS。

所以登录和注销表单看起来很糟糕,但是一旦进入站点,CSS 就会再次起作用。

我猜这是某种身份验证问题?并没有真正深入研究它,因为它只是在开发时工作,所以不是一个大问题,但很高兴知道如何解决它。

【问题讨论】:

【参考方案1】:

要允许未经身份验证的用户查看您的 .css 文件(或任何其他文件/目录),您可以将 location 元素添加到指向 .css 文件的 web.config 文件。

<configuration>
   <system.web>
      // system.web configuration settings.
   </system.web>
   <location path="App_Themes/Default/YourFile.css">
      <system.web>
         <authorization>
            <allow users="*"/>
         </authorization>
      </system.web>
   </location>
</configuration>

【讨论】:

【参考方案2】:

检查并确保 CSS 文件本身不在您要保护的区域中。如果需要,您可以通过 web.config 手动排除该文件。

【讨论】:

通过在 部分添加以下内容手动排除: 这很好。那么它在您的生产环境中是如何工作的呢?除非您的 dev web.config 中缺少此部分,否则您应该在那里遇到同样的问题 我有同样的问题 - 登录页面在开发中没有样式,在生产中很好。除了连接字符串和调试设置外,web.config 完全相同。这个解决方案没有为我解决问题。 更正:有一个愚蠢的时刻,如果您指定整个路径,它确实有效,例如path="App_Themes/Theme" 或 path="App_Themes/Theme/file.css" 我发现这并没有解决我的问题。我为某些人发现它与 IIS 7 有关。看看这些是否有帮助:***.com/questions/6531250/… 或 forums.iis.net/p/1173012/1961218.aspx【参考方案3】:

我自己也遇到了这个问题,手动添加位置没有任何区别。我发现我已授予 IIS_IUSRS 对文件夹的访问权限,因此我的应用程序池访问文件没有问题,但 IIS 使用 IUSR 帐户进行匿名访问。

要修复它,我打开了 IIS 管理器 -> IIS:身份验证 -> 选择“匿名身份验证” -> 单击操作:编辑..(或右键单击)-> 选择“应用程序池标识”

现在匿名访问尝试使用具有正确文件权限的 IIS_IUSRS。

【讨论】:

就是这样!谢谢你的回答。【参考方案4】:

您能否尝试使用Fiddler 或HttpWatch 之类的工具,并检查登录页面是否确实有请求访问.css 文件。验证返回码是否为 200。可能是因为您的开发框中的相对路径问题。

【讨论】:

以上是关于CSS 未应用于未经身份验证的 ASP.NET 页面的主要内容,如果未能解决你的问题,请参考以下文章

Asp Net Core 身份验证问题

当用户未经身份验证时,ASP.NET Core 5 Web API 返回 404 代码而不是 401

在 ASP.NET Core 中未经授权时重定向到登录

Asp.net core 3.1 保护 API 和 Web 应用程序

ASP.NET,401 - 未经授权的有效帐户

asp.net mvc如何实现多个登录页自动跳转的身份认证?