ASP.. NET (3.5, Webforms)在用户未(尚未)授权的情况下无法正确加载CSS

本文关键字:情况下 CSS 加载 授权 NET Webforms ASP 用户 尚未 | 更新日期: 2023-09-27 18:17:52

我这里有一个非常时髦的问题…我继承了一个相当大的ASP。. NET 3.5 Webforms项目,一个问题是,当启动应用程序时,登录页面显示-但没有任何样式....

这是Login.aspx标记(简化):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" 
         Inherits="MyWeb.Web.Login" MasterPageFile="~/MyWebPublic.Master" 
         UICulture="Auto" Culture="Auto" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
   ... some div's, textboxes etc.
</asp:Content>   

这个页面是基于一个"公共"母版页——类似这样:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MyWebPublic.Master.cs" Inherits="MyWeb.MyWebPublic" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <link rel="stylesheet" type="text/css" href="styles/style.css" media="screen" />
    <link rel="stylesheet" type="text/css" href="styles/layout.css" media="screen" />
</head>
<body>
  ...
</body>

所以你可以看到-我有链接到两个CSS样式表在我的主页,这实际上是存在的。

在我的web.config中,我特别允许每个人(甚至是非授权用户)访问我的登录页面:

<!-- Allow access to login page for everyone -->
<location path="Login.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
</location>

然而,当我运行这个项目时,我得到一个丑陋的页面,没有任何 CSS应用。在Firefox错误控制台中,我发现:

样式表http://localhost:50855/Login.aspx?ReturnUrl=%2fstyles%2flayout.css没有加载,因为它的MIME类型,"text/html",不是"text/css"。. aspx
没有加载样式表http://localhost:50855/Login.aspx?ReturnUrl=%2fstyles%2fstyle.css,因为它的MIME类型"text/html"不是"text/css"。

所以看起来好像ASP。NET正在尝试加载CSS,确定这是一个未经授权的用户,并重定向到登录页面-即使试图加载CSS!

一旦我登录-一切都很好,我的CSS应用如预期的…

这里到底发生了什么?我以前从来没有见过这种行为-在所有其他情况下,甚至你得到的第一个页面(登录或其他)得到适当的样式通过应用引用CSS .......

有什么想法吗?

ASP.. NET (3.5, Webforms)在用户未(尚未)授权的情况下无法正确加载CSS

您授权任何用户访问登录页面,但不能访问样式目录中的内容。由于css是通过ASP提供的。NET将不允许访问,直到用户通过身份验证。将以下内容添加到您的网页中。在现有location元素下配置。

<location path="styles">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

也可以查看此链接以获取潜在的解决方案:https://stackoverflow.com/a/804061/1444207