【发布时间】:2023-03-15 19:51:02
【问题描述】:
我有一个在 IIS6.0 上运行的 ASP.NET 存储库站点,我遇到了一个无法重现的问题,但其中三个用户每次都遇到这个问题(大约 20 个其他用户运行良好)。我很确定这与 IIS 身份验证设置有关,但我当然没有排除编码错误。
用户告诉我,这 3 个出现错误的共同因素是他们已将 60 多个文档上传到网站上。所有用户都在不同的省份,所以我只有他们拍摄的屏幕截图和服务器事件日志可供调试。
当尝试访问 ViewPage.aspx 页面(但不是站点上的任何其他页面)时,系统会提示他们输入用户凭据。当他们尝试登录时,他们会再次收到登录提示。他们尝试登录 3 次后,收到以下错误消息:
HTTP 错误 401.1 - 未经授权:由于凭据无效,访问被拒绝。
系统事件查看器有以下警告(其中任一警告超过 10 个):
事件ID:1011
来源:W3SVC
说明:
为应用程序池“SDAAppPool”提供服务的进程与万维网发布服务发生了致命的通信错误。进程 ID 为“3264”。数据字段包含错误号。
和
事件ID:1009
来源:W3SVC
说明:
为应用程序池“SDAAppPool”提供服务的进程意外终止。进程 ID 为“2088”。进程退出代码为“0x800703e9”。
安全事件查看器有以下几个失败审计:
事件 ID:560
来源:安全
类别:对象访问
说明:
对象打开:
对象服务器:SC 管理器
对象类型:服务对象
对象名称:WinHttpAutoProxySvc
手柄 ID:-
操作 ID:{0,557880730}
进程 ID:444
镜像文件名:C:\WINDOWS\system32\services.exe
主要用户名:EBTOPVNET01$
主域:EBSS
主登录 ID:(0x0,0x3E7)
客户端用户名:网络服务
客户域:NT AUTHORITY
客户端登录 ID:(0x0,0x3E4)
访问:查询服务状态
启动服务
从服务中查询信息
特权:-
受限制的 Sid 计数:0
访问掩码:0x94
应用程序事件查看器有以下错误:
事件 ID:5000
来源:.NET 运行时 2.0 错误
用户:不适用
说明:
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 来检查访问等。如果 userID == 0 他们只获得读取权限(如果 User.Identity.Name 返回空,我认为这会给用户读取权限而不是 401 错误)。我在另一个页面上执行相同的用户检查,用户访问它没有问题。
根据我在谷歌上搜索各种子问题的几天,我不确定所有这些事实是否相关,但我已经包含了我能想到的所有内容。如果我错过了任何相关的内容,请告诉我。任何关于从哪里开始调查或能够在我的本地主机上重现它以便我可以调试的方法的想法将不胜感激。谢谢。
【问题讨论】:
-
UsersService() 是什么,它在做什么?
-
UsersService 是 NetTiers 生成的 DAL 类。该方法从数据库返回具有该 NTID 的用户的 TList。 (将有 0 或 1 个具有该 NTID 的用户)
标签: asp.net iis http-status-code-401