ASP.NET Web.config中的相对路径

4

我在 ASP.NET Web.config 应用程序中有以下标记:

<add name="monitorEntities" connectionString="metadata=res://*/Models.MonitorDB.csdl|res://*/Models.MonitorDB.ssdl|res://*/Models.MonitorDB.msl;provider=System.Data.SQLite;provider connection string='data source=&quot;C:\Documents and Settings\jdoe\Desktop\LcdManager\LcdManager\App_Data\monitor.sqlite&quot;'" providerName="System.Data.EntityClient" />

这指的是一个EntityFramework实例映射到应用程序的App_Data目录中的sqlite数据库。

如何将链接设置为相对路径,以便在生产环境中更容易部署?

谢谢。

3个回答

6

您是否可以在连接字符串中使用“|DataDirectory|”(而不是C:...\App_Data)?例如:

connectionString="... |DataDirectory|\monitor.sqlite ..."

我知道这适用于部署在应用程序的app_data文件夹中的SQL Server Express数据库。但我不知道这是否适用于Entity Framework / SQLite。

在一个服务器上构建,然后部署到另一个服务器上,这样行得通吗? - Dave Archer
只要你的数据库位于已部署应用程序的App_Data文件夹中。 - M4N
糟糕!是的,web.config没有编译,我真是太蠢了 :-( 这可能是正确的做法,而不是我的答案。 - Dave Archer

6

你试过了吗?

<add name="monitorEntities" connectionString="metadata=res://*/Models.MonitorDB.csdl|res://*/Models.MonitorDB.ssdl|res://*/Models.MonitorDB.msl;provider=System.Data.SQLite;provider connection string='data source=&quot;./App_Data/monitor.sqlite&quot;'" providerName="System.Data.EntityClient" />

或者

<add name="monitorEntities" connectionString="metadata=res://*/Models.MonitorDB.csdl|res://*/Models.MonitorDB.ssdl|res://*/Models.MonitorDB.msl;provider=System.Data.SQLite;provider connection string='data source=&quot;|DataDirectory|/monitor.sqlite&quot;'" providerName="System.Data.EntityClient" />

0

我猜你在说这一段

C:\Documents and Settings\jdoe\Desktop\LcdManager\LcdManager\App_Data\monitor.sqlite

相反,试试这个

../../App_Data/monitor.sqlite

(对于'../'的数量不确定,但您可以理解为)../../App_Data/monitor.sqlite


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接