验证后,与访问数据库的连接失败

时间:2014-04-21 07:25:43

标签: authentication windows-7 asp-classic oledbconnection

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

这很好直到我使用代码调用用户身份验证:

sAccount=Request.ServerVariables("LOGON_USER")'NT challenge
if sAccount="" then 
    Response.Status="401 Unauthorized"
    Response.End
end if

强制验证是在不同的页面上进行的。如果我在同一窗口中执行此操作,然后返回到连接到数据库的页面,则会发生80004005:未指定的错误。只有解决方法是关闭窗口并重新打开它。如果我手动打开第二个窗口(同一个sessionID!),我在第二个窗口中遇到同样的问题。第一个保持正常工作,即使刷新后也是如此。

我试图用程序代码打开第二个窗口,但是我也在第一个窗口中收到错误。

搜索此站点,我已经完成了在sysWOW64 / inetsrv上授予读访问权限的技巧。另外:如果我为Windows 7进行全新安装,它可以正常运行一段时间而不是"发生了一些事情" (也许安装VS的Office)并再次出现旧问题。使用基本身份验证,使用Kerberos或更改身份验证协议顺序等技巧似乎没有任何效果。

我是一所旧学校"开发商。我希望有人可以通过提供最简单的经典ASP代码来帮助我,使用Windows验证和对Microsoft访问数据库的读/写访问进行身份验证。

1 个答案:

答案 0 :(得分:1)

使用Access,您需要确保数据库在多用户模式下运行(2010年及以后可用),并且您需要检测用户何时离开您的页面以在退出/关闭您的站点/页面时关闭与Access的连接。 从最早的版本开始,这就是Access的诅咒。

或者确保在没有锁的情况下打开数据库。在SQL服务器中,可以通过在打开SQl语句时执行以下操作来实现:

 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

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