2008-12-04 33 views
0

我在访问位于远程服务器上的数据库时遇到问题。如何通过指向远程共享的虚拟文件夹访问数据库

我有一个ASP.NET 2.0的网页正在试图连接到一个数据库。
数据库通过虚拟文件夹(我在IIS中设置)访问。
虚拟文件夹指向包含数据库的远程共享。

虚拟文件夹(在网络应用程序的根目录)在一个共享的远程服务器上通过UNC路径指向:

\\databaseServerName\databaseFolder$\ 

虚拟文件夹已“读”和“浏览”设置为权限'真正'。

我的连接字符串存储在 '的appSettings' web.config中的部分:

<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=http://webAppServerName/virtualFolderName/databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/> 

连接对象是我的.aspx页面上declard:

Dim objConnVirtual As New OleDbConnection(ConfigurationManager.AppSettings("conStrVirtual")) 

下面是代码试图使用连接对象:

Public Sub Test() 
    If objConnVirtual.State <> ConnectionState.Open Then 
     objConnVirtual.Open() 
    End If 
    Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM TableName", objConnVirtual) 
    objDR = cmd.ExecuteReader() 
    If objDR.Read() Then 
     response.write("Shazaam! Data shows up here") 
    End If 
    objDR.Close() 
    objConnVirtual.Close() 
End Sub 

当我运行上面的代码时,我得到以下e RROR(在此行的代码“objConnVirtual.Open()”的:
异常详细信息:System.Data.OleDb.OleDbException:不是有效的文件名。

我检查了数据库的名称,它是正确的(甚至复制/粘贴它,以确保)

如果我把连接字符串的“数据源”节到我的浏览器的地址栏中我可以成功查看远程服务器上的共享内容。

不确定这是否是权限问题或代码问题。
我已经使用了这个垃圾,但一直没有找到解决办法。

任何帮助,非常感谢。

回答

0

UPDATE

首先,谢谢大家谁提交了答案。

但是,我们结束了而不是使用'通过虚拟文件夹连接到远程数据库'方法,因为使这个工作所需的权限的复杂性给我们带来了比它值得的更多的问题。我们将UNC路径放回到连接字符串中,这可能不是实现此目的的最佳方式,但正在为我们工作。

0

确保两个服务器都彼此内部访问,还可以指定在连接字符串中数据库服务器的IP &端口。

1

当访问远程访问MDB数据库,你必须指定一个像\\ remoteMachine \共享\ TEST.MDB UNC路径。

确保您的应用程序池标识具有正确的权限连接到远程共享。默认情况下,在IIS 6上,您正在使用网络服务帐户,该帐户默认情况下不允许访问远程共享。

最好的办法是让应用程序池有一个专门的服务用户身份运行。

+0

嗨路易斯,谢谢你的回答。当你说'让AppPool运行一个专门的服务用户'时,你可以扩展你的意思吗?我为我的应用程序添加了一个新的应用程序池,但仍无法通过网页访问数据库。 – Dhaust 2008-12-04 06:53:31

0

更新

我还要提到的是它works on my machine(却一次也没有加载到生产箱)如果我声明在网上的“的appSettings”部分的连接字符串。配置是这样的:

<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=\\databaseServerName\databaseFolder$\databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/> 

这使我认为这可能是需要使用本地IUSER帐户以外的域凭据的问题。

1

当您的Web应用程序尝试读取数据库文件时,服务器上正在使用的帐户是什么?无论这个用户帐号是什么,它都需要有权限读取该文件夹/文件。在IIS6中,您可以将虚拟文件夹配置为使用任何用户帐户...在“目录安全性”选项卡上的“身份验证和访问控制”下有一个“编辑”按钮。

您的错误消息似乎只是一般性错误消息,权限问题是您的真正问题。