SECOND 请求的文件/URL 授权失败

File / URL authorization failed for the SECOND request

我有类似的问题:

URL authorization failed for the request

IIS File authorization failed for the request

我正在 运行在 IIS 7 上连接几个类似的网站。我正在使用 Firefox 进行测试,这样我就可以充当其他用户。

我一直在站点 1 上完成所有工作。我可以作为网络用户 administratorsys\bob.

登录

我现在在网站 2 和 3 上工作。我可以用 administrator 登录就好了。问题是:当我以 dom\bob 身份登录时,初始登录已正确验证。在所有后续请求中,dom\bob 因文件或 URL 身份验证失败而被拒绝。

应用程序事件日志条目与链接问题中引用的条目在本质上相似,除了自定义事件详细信息部分是空的。

我已经检查了 IIS 管理器中的网站,到目前为止没有发现任何差异。我已经确认 web.config 文件是相同的,除了特定于站点的信息(例如连接字符串)。据我所知,我已经验证了文件夹权限是正确的。

具体权限:

<authentication> 模式在所有网站上都是 Windows

<authorization> 节点在网站之间尤其相同。

在所有情况下,本地域都是同一个 MS Windows Server 2008 虚拟机 -- 一个服务器映像托管多个网站。所以理论上,所有网站的用户授权应该是相同的。

--编辑1-- 只是我的运气。在 sprint 审查期间,我在网站 1 上弹出了这个授权问题,在一个 JavaScript 文件上,该文件具有 运行 之前还不错。有一个转折,在这种情况下,用户能够在授权失败之前浏览相当多的页面。

我会尽快 post 我的日志。

--编辑2-- 在这个问题开始之前不久,我确实改变了一个环境:我更新了 jQuery 和 Bootstrap.

这是我在 packages.config 中的差异:

之前

  <package id="AspNet.ScriptManager.bootstrap" version="3.3.5" targetFramework="net45" />
  <package id="AspNet.ScriptManager.jQuery" version="2.1.4" targetFramework="net45" />
  <package id="bootstrap" version="3.3.5" targetFramework="net45" />
  <package id="jQuery" version="2.1.4" targetFramework="net45" />

之后

  <package id="AspNet.ScriptManager.bootstrap" version="3.3.6" targetFramework="net45" />
  <package id="AspNet.ScriptManager.jQuery" version="2.2.3" targetFramework="net45" />
  <package id="bootstrap" version="3.3.6" targetFramework="net45" />
  <package id="jQuery" version="2.2.3" targetFramework="net45" />

这里是应用程序事件日志中的两个典型条目,经过适当清理。

1:

Event code: 4008 
Event message: File authorization failed for the request. 
Event time: 6/2/2016 2:31:29 PM 
Event time (UTC): 6/2/2016 6:31:29 PM 
Event ID: e4a0fd65d9e34686967f14429d21ab97 
Event sequence: 14 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/21/ROOT-1-131093658656731243 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\Users\Administrator\Documents\Visual Studio 2013\Projects\HAWK_WebForms\HAWK.Web.LogansRun\ 
    Machine name: BAH01 

Process information: 
    Process ID: 5288 
    Process name: iisexpress.exe 
    Account name: HAWK\administrator 

Request information: 
    Request URL: http://localhost:53104/Scripts/jquery-2.2.3.js 
    Request path: /Scripts/jquery-2.2.3.js 
    User host address: ::1 
    User: HAT\john.smith
    Is authenticated: True 
    Authentication Type: NTLM 
    Thread account name: HAWK\administrator 

Custom event details: 

2:

Event code: 4008 
Event message: File authorization failed for the request. 
Event time: 6/2/2016 2:28:51 PM 
Event time (UTC): 6/2/2016 6:28:51 PM 
Event ID: a43d7292a8894df193600e829e74c696 
Event sequence: 14 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/14/ROOT-1-131093657141125131 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\Users\Administrator\Documents\Visual Studio 2013\Projects\HAWK_WebForms\HAWK.Web.LogansRun\ 
    Machine name: BAH01 

Process information: 
    Process ID: 5248 
    Process name: iisexpress.exe 
    Account name: HAWK\administrator 

Request information: 
    Request URL: http://localhost:53752/Scripts/Pages/Admin/SelfRatingWizard.js 
    Request path: /Scripts/Pages/Admin/SelfRatingWizard.js 
    User host address: ::1 
    User: HAWK\james.jones
    Is authenticated: True 
    Authentication Type: NTLM 
    Thread account name: HAWK\administrator 

Custom event details: 

--编辑3--

我尝试从这个答案中添加注册表项:

它没有改变任何东西。我还仔细检查了身份验证提供程序的顺序。 NTLM 已经领先于所有网站的协商。

--另一个更新-- 我回滚了 Bootstrap 和 jQuery。令我惊讶的是,文件授权仍然失败!同样,jQuery.js 是一个点——几乎每个文件都会提出这个投诉。就好像授权令牌获得 "forgotten".

--更新到编辑 1-- 与所有其他 JavaScript 文件一样,在网站 1 中引发问题的 JavaScript 文件没有 Network Service 的权限。一旦我解决了这个问题,网站 1 就解决了。唉,这个修复没有解决网站 2.

当多个因素同时存在时(在不同的浏览器中)可能会出现此行为:

  • Windows 身份验证已启用。 AnonymousAuthentication 已禁用;
  • 通过IP地址访问服务器(不是通过别名);
  • 第一个 ajax 请求已完成;
  • 超时 1 分钟。

检查有关此的 ajax request hangs when referring to server by IP address and WindowsAuthentication is enabled in IE11 线程。

检查此问题是否适用于您的情况。如果是这样,请尝试使用上述列表中的任何其他值来(暂时)解决此问题。

我最终发现 Project1 的目录向域组 Users 授予读取权限,而其他项目的 none 也是如此。一旦我授予用户对 Project2 的基本目录的读取权限,身份验证问题就解决了。

所以这是一个 OS 级的用户权限问题。