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 .......有什么想法吗?
您授权任何用户访问登录页面,但不能访问样式目录中的内容。由于css是通过ASP提供的。NET将不允许访问,直到用户通过身份验证。将以下内容添加到您的网页中。在现有location元素下配置。
<location path="styles">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
也可以查看此链接以获取潜在的解决方案:https://stackoverflow.com/a/804061/1444207