Authentication 身份验证后与access数据库的连接失败

Authentication 身份验证后与access数据库的连接失败,authentication,windows-7,asp-classic,oledbconnection,Authentication,Windows 7,Asp Classic,Oledbconnection,在Windows 7pro或Windows 8.1pro上使用经典ASP,我使用连接字符串“Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\INetPub\KN2014\Databases”连接到Microsoft Access 2003数据库 这可以正常工作,直到我使用以下代码调用用户身份验证: sAccount=Request.ServerVariables(“登录用户”)NT挑战 如果s

在Windows 7pro或Windows 8.1pro上使用经典ASP,我使用连接字符串“Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\INetPub\KN2014\Databases”连接到Microsoft Access 2003数据库

这可以正常工作,直到我使用以下代码调用用户身份验证:

sAccount=Request.ServerVariables(“登录用户”)NT挑战
如果sAccount=“”,则
Response.Status=“401未经授权”
答复.完
如果结束
在不同的页面上强制进行身份验证。如果在同一窗口中执行此操作,然后返回到连接到数据库的页面,则会出现80004005:未指定的错误。唯一的解决办法是关闭窗口并重新打开。如果我手动打开第二个窗口(相同的sessionID!),我会在第二个窗口中遇到同样的问题。即使在刷新之后,第一个仍能正常工作

我试图用程序代码打开第二个窗口,但在第一个窗口中也出现了错误

搜索这个站点时,我已经完成了在sysWOW64/inetsrv上授予读取权限的技巧。另外:如果我为Windows7进行了一次干净的安装,它在一段时间内运行良好,而不是“发生了什么事”(可能是安装了VS of Office),旧问题再次出现。使用基本身份验证、使用Kerberos或更改身份验证协议的顺序等技巧似乎没有效果


我是一个“老派”开发者。我希望有人能帮助我,提供最简单的经典ASP代码,使用windows验证和对Microsoft access db的读/写访问进行身份验证。

使用access,您需要确保数据库在多用户模式下工作(2010年及更高版本提供)在退出/关闭站点/页面时,您需要检测用户何时离开您的页面以关闭访问连接。 从最早的版本开始,这就是访问的诅咒

或者确保打开数据库时没有锁定。在SQL server中,可以通过在打开SQL语句时执行以下操作来实现:

 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

但我不确定这是否在Access中可能,更好的选择是切换到SQL Express。

这与代码无关,因为如果浏览器对asp页面使用匿名身份验证,它只会向浏览器返回401状态。您的问题是以独占方式打开与数据库的连接,而不是再次关闭该连接,并且关闭浏览器不会立即终止会话,因此最终会导致数据库锁定。请参阅。可能的副本