静态文件上的间歇性401和302错误

时间:2012-06-06 21:24:56

标签: asp.net web-config forms-authentication http-status-code-401 http-status-code-302

我正在为我们的客户开发一个网站,并且几周来一直有一个棘手的问题。问题是间歇性的,可能在一天内发生两次,也可能在两周内发生一次。

当它发生时,客户端将在尝试在页面上加载静态脚本或样式标记时开始收到401.3“未授权”错误。它始终是.css或.js文件被拒绝,设置<modules runAllManagedModulesForAllRequests="false" />没有解决问题。当问题发生时,它会有效地阻止文件,直到重新启动应用程序池。

该网站正在使用表单身份验证和库存“AspNetSqlMembershipProvider”。该站点具有/ Accounts文件夹中的受保护文件,/ Styles中的样式和/ Scripts中的脚本。该站点启用了匿名访问,并在/ Accounts文件夹中有一个单独的web.config,拒绝访问匿名用户(虽然这对于runAllManagedModulesForAllRequests = false来说甚至不重要)。

我查看了事件日志,我看到了这一点:
2012-06-06 14:23:32 [ipaddress] GET /subfolder/Styles/Site.css ver = 11 44​​3 - [ipaddress] Mozilla / 5.0 +(Windows + NT + 6.1; + WOW64; + rv:12.0)+ Gecko / 20100101 + Firefox / 12.0 https://thesitename.net/subfolder/Account/Login.aspx 401 3 5 1493 429 62

有时在很短的时间后它会修复自己,或者如果我重新启动应用程序池,我会得到这个:
2012-06-06 14:30:30 [ipaddress] GET /subfolder/Styles/Site.css ver = 11 44​​3 - [ipaddress] Mozilla / 5.0 +(Windows + NT + 6.1; + WOW64; + rv:12.0)+ Gecko / 20100101 + Firefox / 12.0 https://thesitename.net/subfolder/Account/Login.aspx 200 0 0 2533 455 78

我终于让托管服务提供商启用了失败的请求跟踪,最后得到了一个错误的痕迹: frt

我这次收到的每个失败的请求跟踪文件都表示失败发生在“FILE_CACHE_ACCESS_END”事件之后。这个事件在做什么以及为什么拒绝访问?

3 个答案:

答案 0 :(得分:1)

编辑:

您应该尝试遵循“失败的请求跟踪”说明here。该错误几乎肯定与NTFS权限相关。

看起来您在问题行中遇到了Win32“找不到路径”错误(HTTP状态代码后面的3,字段sc-win32-status)。

网络上的这些文件是否共享?看起来Web服务器和托管这些文件的驱动器之间可能存在一些连接问题。在尝试读取这些文件时,这可能是IIS用户的授权错误,这可以解释401错误。

W3C扩展日志文件格式(IIS 6.0):http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/676400bc-8969-4aa7-851a-9319490a9bbb.mspx?mfr=true

Win32状态代码:http://msdn.microsoft.com/en-us/library/ms681382.aspx

答案 1 :(得分:0)

我会在健康监控日志(事件代码3005:System.Data.Linq.ChangeConflictException)之前查看该错误的原因。如果在此错误之后您的问题开始出现,那么很有可能消除此错误将解决您的问题。

以下是一些讨论此错误的页面,可能有助于理解错误及其解决方法:

http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/11/25/linq-to-sql-concurrency-changeconflictexception-row-not-found-or-changed.aspx

http://sebastienlachance.com/post/SystemDataLinqChangeConflictException-Row-not-found-or-changed.aspx

http://weblogs.asp.net/okloeten/archive/2008/04/28/6139181.aspx

答案 2 :(得分:0)

我长期以来一直在努力解决这个错误。

此错误的一个奇怪原因是资源(文件或文件夹)位于对“所有人”有限或无访问权限的共享(SMB共享)中。这将覆盖您可能专门添加到文件夹或文件的权限,并导致匿名访问时出现401.3错误。