|DataDirectory|解决webconfig数据库链接的相对路径问题

webconfig中的数据库链接是不支持Server.MapPath的,通常咱们只能写上数据库文件的物理路径,这给网站迁移带来很大的不方便。今天在网上找到了一个解决办法,与你们分享下。看如下代码: web

<connectionStrings>
<add name="ConnStr_Access"
      providerName="System.Data.OleDb"
      connectionString=
      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\cms.mdb;"
    />
</connectionStrings>

|DataDirectory|会被自动解析到App_Data

下面是MSDN的说明: 数据库

 

使用 DataDirectory 替代字符串

AttachDbFileName 已在 ADO.NET 2.0 中进行了扩展,引入了 |DataDirectory|(包含在管道符号中)替代字符串。DataDirectory 与 AttachDbFileName结合使用可指示数据文件的相对路径,容许开发人员建立基于数据库源的相对路径(而无需指定完整路径)的链接字符串。 c#

DataDirectory 点的物理位置取决于应用程序的类型。 在此示例中,要附加的 Northwind.mdf 文件位于应用程序的 \app_data 文件夹中。 app

Data Source = .\\SQLExpress;Integrated Security = true ;
User Instance
= true ;
AttachDBFilename
=| DataDirectory | \app_data\Northwind.mdf;
Initial Catalog
= Northwind;

使用 DataDirectory 时,目录结构中的结果文件的路径不能高于替代字符串指向的目录。 例如,若是彻底展开的 DataDirectory 为 C:\AppDirectory\app_data,则上面显示的示例链接字符串有效,由于它在 c:\AppDirectory 之下。 可是,若是尝试将 DataDirectory 指定为|DataDirectory|\..\data ide

相关文章
相关标签/搜索