ASP.NET 表单身份验证 - JavaScript 登录页面错误(匿名用户访问时)

ASP.NET Forms Authentication - JavaScript errors on Login page (when anonymous users visit)

仅在我的登录页面上我收到 18 JavaScript 个错误,主要错误似乎是:'ASP.NET Ajax client-side framework failed to load.' 我感觉这与安全性有关,因为我最近刚刚添加了表单身份验证到网站。如果我登录,所有错误都会消失。

当此行尝试 运行 :

时,似乎 sys 未定义
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');

我的 Web.config 中有以下内容:

<authentication mode="Forms">
  <forms name=".FormsAuthCookie" loginUrl="Security/Login" protection="All" timeout="120" cookieless="AutoDetect" />
</authentication>
<authorization>
  <deny users="?"/>
</authorization>

添加 deny users="?" 后的主要问题: ASP.NET Ajax 当匿名用户访问网站时,客户端框架无法加载到我的 Login.aspx 页面。

更新:::
这真的没有多大意义,但是在将 EnableCdn="true" 添加到我的脚本管理器之后,当匿名用户访问登录页面时,我没有收到任何错误....这似乎是一个黑客攻击我的实际问题是因为这是一个干净的 .net webforms 项目。

<asp:ScriptManager runat="server" EnableCdn="True">

听起来身份验证阻止了对 javascript 库的访问。如果您在 chrome 中查看网络选项卡,您是否在加载 js 文件时遇到任何错误?如果是这样,我会说在配置文件中的目录中添加一个例外。

类似于:

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

我认为 CDN 工作的原因是因为文件是从 CDN 加载的,而不是你的应用程序,所以 CDN 服务器不需要身份验证。

根据上面接受的答案,如果您使用 Visual Studio 2015 ASP.NET 4.5 WebForms Application[=28=,则需要 web.config 配置] 项目模板:

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

bundles 文件夹实际上并不存在,而是捆绑脚本的虚拟路径。有关详细信息,请参阅 App_Start\BundleConfig.cs

请注意,允许在 web.config 中访问 ScriptResource.axd and/or WebResource.axd 就像在许多其他线程中一遍又一遍地建议的那样 不适用于 Visual Studio 2015 ASP.NET 4.5 WebForms 应用程序项目模板的捆绑设置。