2010-10-14 57 views
3

我有一个IIS存储库站点在IIS6.0上运行,我有一个问题,我无法重现,但三个用户每次都有这个问题(〜20其他用户运行得很好)。我很确定它与IIS身份验证设置有关,但我当然不排除编码错误。某些用户的ASP.NET IIS身份验证问题

用户告诉我,得到错误的3之间的共同因素是他们已经上传了超过60个文件到网站上。所有的用户都在一个不同的省份,所以我只有截图他们已经采取和服务器事件日志调试。

当试图转到ViewPage.aspx页面(但不是站点上的任何其他页面)时,系统会提示他们提供他们的用户凭据。当他们尝试登录时,他们再次收到登录提示。他们尝试登录三次后,他们收到以下错误信息:

HTTP错误401.1-未经授权:由于凭据无效,访问被拒绝。

系统事件查看器具有以下警告(超过10其中一方的):

事件ID:1011
来源:W3SVC
说明:
进程服务应用程序池“SDAAppPool”与万维网发布服务遭遇致命通信错误。进程ID是'3264'。数据字段包含错误编号。

事件ID:1009
源:W3SVC
描述:
进程服务应用程序池 'SDAAppPool' 意外终止。进程ID是'2088'。进程退出代码是'0x800703e9'。

安全事件查看器有以下几个失败审核的:

事件ID:560
来源:Security
类别:对象访问
说明:
对象打开:
对象服务器:SC管理器
对象类型:服务对象
对象N AME:WinHttpAutoProxySvc
句柄ID: -
操作ID:{} 0,557880730
进程ID:444
图像文件名:C:\ WINDOWS \ SYSTEM32 \服务。EXE
主要用户名:EBTOPVNET01 $
主域:EBSS
主要登录ID:(0x0,0x3E7)
客户端用户名:NETWORK SERVICE
客户端域:NT AUTHORITY
客户端登录ID:(为0x0, 0x3E4)
访问:服务
的查询状态 启动该服务从服务
特权
查询的信息: -
限制Sid数:0
次访问掩码:0x94之间

中的应用事件查看器具有以下的错误:

事件ID:5000
来源:.NET运行库2.0错误
用户:N/A
描述:
EventType clr20r3,P1 w3wp.exe,P2 6.0.3790.3959,P3 45d691cc,P4 system.data,P5 2.0.0.0,P6 4889ece0,P7 1849,P8 0,P9 system.stackoverflowexception,P10 NIL。

我的web.config具有以下认证/授权码:

<authentication mode="Windows"/> 
<authorization> 
    <deny users="?"/> 
</authorization> 

我用的是ViewPage.aspx页上的以下的用户检查:

UsersService us = new UsersService(); 
TList<Users> currUser = us.Find("Ntid = '" + User.Identity.Name + "'"); 
int userID = 0; 
if (currUser.Count != 0) 
{ 
    userID = currUser[0]; 
} 

,并使用该用户ID用于检查访问等。如果用户ID == 0,它们只能读取访问权限(如果User.Identity.Name返回空值,我认为会给用户读取访问权限而不是401错误)。我在另一个页面上进行相同的用户检查,并且用户访问它时没有问题。

基于我在Google上搜索各种子问题的几天,我不确定这些事实是否都是相关的,但我已经包含了我能想到的所有内容。如果有什么有关的,我错过了让我知道。任何想法从哪里开始调查或一种方式能够在我的本地主机上重现这一点,所以我可以调试将不胜感激。谢谢。

+0

什么是UsersService()和它在干什么? – CodingGorilla 2010-10-14 20:39:05

+0

UsersService是NetTiers生成的DAL类。该方法从数据库中返回具有该NTID的用户的TList。 (将有0或1用户与该NTID) – Richard 2010-10-14 20:46:05

回答

1

从进程退出代码,它看起来像某种递归正在发生,永远不会展开。还有由惊人Tess Ferrandez解释一个伟大的文章如何调试这样一个问题:

A .NET Crash: How not to write a global exception handler

+0

我正在调查递归方法,我必须看看有没有什么。但是,这不会给我一个ASP.NET服务器错误,而不是401.1 – Richard 2010-10-15 14:00:03

+0

@Richard - 这可能是工作进程崩溃的副作用。我肯定会首先解决崩溃问题,这非常严重,并且会影响网站的所有用户。您还应该了解哪些浏览器正在使用,它们的Cookie设置是什么等。这些用户可能会对表单身份验证票证Cookie进行不同处理。但我在那里黑暗中刺伤。正如我所说的,先解决工作进程崩溃并从那里拿走它。 – Kev 2010-10-15 14:12:06

+0

好吧,似乎有一个循环将用户有权访问的每个未经认可的上载文档添加到字符串中。循环并不是无限的,但是如果用户在这个状态下有足够的文档,那么字符串变得足够大,可以溢出堆栈。一旦我们批准了这些文档,字符串不会大到足以溢出堆栈,并且不会再发生401.1错误。所以基本上我浪费了时间去查看这个错误(并且改变ISS权限等)。感谢您指点我正确的方向。 – Richard 2010-10-15 20:17:35