IIS上的ASP.Net网站连接到Access DB,其中包含指向另一台计算机上的SharePoint列表

时间:2009-06-19 18:50:34

标签: asp.net sharepoint iis ms-access

我的问题如下,

我在IIS上托管了一个ASP.Net网站。此Web站点连接到同一服务器上的Access 2007 DB文件。 DB文件包含指向同一域上另一台服务器上的共享点列表的链接。如果我在visual studio内置服务器上运行该网站,我可以打开与DB文件的连接并检索数据。但每当我尝试通过IIS运行网站时,网站都无法打开与DB文件的连接。

您认为问题是什么?

感谢。

4 个答案:

答案 0 :(得分:2)

这将是一个权限问题。当您使用Visual Studio的Web服务器运行时,它正在运行,另一方面,IIS作为网络服务运行(默认情况下)。这在它可以做的事情上是有限的。

要访问访问数据库(没有双关语),IIS运行的帐户将需要能够读取,写入,执行,更改和删除数据库所在的目录。默认情况下,这应该授予APP_DATA目录,如果您的访问数据库在其他地方,则需要授予这些权限。

通过访问连接到远程计算机是另一个问题,因为网络服务帐户是本地帐户并且不会存在于sharepoint服务器上,并且由于它不存在而无法授予访问权限,所以它不太可行。

如果您在某个域中,则可以在合适的锁定域帐户下运行IIS,它可能会有效,但坦率地说它有点混乱!

答案 1 :(得分:1)

看一下这篇文章:

如何从Active Server Pages连接到远程Access数据库
http://support.microsoft.com/kb/253580

是的,我知道您的数据库位于同一台计算机上,但运行IIS时,文件和文件夹的权限和身份验证存在差异。这篇文章涵盖了任何困扰你的事情。

混合Access数据库和IIS是否是一件好事是一个单独的讨论......

答案 2 :(得分:1)

Access 2007使连接到SharePoint变得轻而易举。链接到列表,然后ADO,甚至DAO + VBA代码和您的SQL查询在这些列表上工作!

由于这个原因,我看到很多人因此开始使用JET(实际上它在Access 2007中称为ACE)作为SharePoint的数据连接器。由于您正在构建基于Web的系统,因此我们不在此处使用ms-access,而是仅使用随访问2007一起提供的2007版JET数据引擎。

有人确实需要推出一个用于SharePoint列表的OLEDB提供程序,它允许某些网站或.net代码将这些列表视为ms-access等标准sql表。使用JET作为数据连接器系统可能不是一个好主意。我确实意识到你不是在访问JET表中存储或放置数据,而是使用新访问JET引擎的精彩功能来查看和使用SharePoint列表作为常规sql表。这种方法允许您的ASP.net代码对该数据执行sql更新或执行任何操作,就好像这是一个常规的sql表。它确实让这很容易。

SharePoint网站上的安全权限因此将查看此连接而不是最终用户,但始终将USER视为连接的实际网站(或者至少是您在链接时使用ms-access的用户表到SharePoint)。执行此操作时,我不相信SharePoint用户身份验证过程可以正常工作。您将在SharePoint网站上更改一些内容,接下来您知道JET连接将尝试提示您输入新的登录凭据。您无法在该时间点提供或控制这些登录凭据。

因此,正如其他人所指出的那样,这将是有问题的,而且不可靠。

答案 3 :(得分:0)

使用Access作为软件从ASP.net站点访问SharePoint将从长远来看给您带来很多痛苦。

更好的方法是使用SharePoint的Web服务来访问该数据 - 完全从等式中删除Access。

http://www.scribd.com/doc/8634090/Accessing-SharePoint-Data-Using-C-Without-Running-Code-On-the-SharePoint-Server-Part-1

MSDN - Using ASP.NET web services

Creating and Consuming a Web Service