2014-09-30 226 views
1

如何将连接字符串的绝对路径更改为相对路径?

<add name="movies_db.mdf" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\user\Documents\Visual Studio 2013\WebSites\Movies\App_Data\movies_db.mdf;Integrated Security=True" 
    providerName="System.Data.SqlClient"/> 

嗨,我在我的web.config页面添加此连接字符串连接到我的 “movies_db.mdf” 数据库。将鼠标指向“服务器资源管理器”中的数据库名称时,我从属性部分复制了整个路径。现在这已经在我的电脑上工作了,据我所知,连接字符串的路径称为绝对路径。如何将其更改为相对路径,以便它可以在另一台计算机上工作并连接?

我正在使用Visual Studio 2013并试图创建一个连接到数据库的网站。

+0

在这里看到我的回答:http://stackoverflow.com/questions/25964195/why-doesnt-datadirectory-change-on-run-时间/ 25964352#25964352 – Claies 2014-09-30 22:08:15

回答

1

让您的连接字符串设置如下:

<connectionStrings> 
    <add name="movies_db.mdf" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename={%FileName%};Integrated Security=True" 
    providerName="System.Data.SqlClient"/> 
</connectionStrings> 

然后在你的代码中使用的连接字符串如下:

ConfigurationManager.ConnectionStrings["movies_db.mdf"].ConnectionString.Replace("{%FileName%}", 
Server.MapPath("~/App_Data/movies_db.mdf")); 
+0

嗨,我做了上面提出的更改并在另一台计算机上尝试过,但现在出现了另一个问题: “尝试为文件C:\ Users \ .net \附加自动命名数据库。 Desktop \ Movies_Project_300521788 \ App_Data \ movies_db.mdf失败。具有相同名称的数据库存在,或者指定的文件无法打开,或位于UNC共享上。“ 我该如何解决这个问题? 感谢您的回复 – 2014-10-01 17:30:49

+0

这似乎更像是一个文件权限问题。运行您的IIS服务器的帐户(通常是应用程序池帐户用户ID)无法访问您的桌面。我会感激的是,这并不是因为......如果Web应用程序被允许读取/修改桌面的内容,我们会遇到巨大的安全问题。尝试将其放置在您知道的IIS应用程序池用户有权访问的某个位置。例如,对我来说就是:C:\ inetpub \ wwwroot \ MyWebSite。基本上,将它放在Web应用程序的App_Data文件夹中。所以C:\ inetpub \ wwwroot \ MyWebsite \ App_Data。 – 2014-10-01 17:37:10

+0

你的建议工作完美:我只是把文件夹放在intetpub \ wwwwroot中,并且数据库读取正常。 感谢您的帮助,您的解释帮助我了解了以前不知道的一些事情。有了这个,我用你的连接字符串和sqlConnection对象,工作正常。 我的问题现在应该总是使用,而不是使其成为绝对路径?似乎绝对路径只能在一台计算机上运行,​​除非您希望它保留在计算机上,否则这是绝对无用的吗? 再次感谢 – 2014-10-05 16:29:28

-1

尝试。它适用于SQL Server数据库,但不知道是否为的LocalDB工作

<add name="con-string1" connectionString="Data Source=(LocalDB)\v11.0; Initial Catalog=movies_db;Integrated Security=True" providerName="System.Data.SqlClient"/> 
+1

这对存储在文件系统中的数据库不起作用。他的问题是关于文件系统中的DB;没有一个存储在SQL Server中。 – 2014-09-30 22:08:58