|DataDirectory| 解决Web.config中数据库连接的相对路径问题

news/2024/11/7 18:47:06/

1、业务背景

维护老系统代码,Web.config中数据库字符串连接的相对路径的处理

2、核心代码如下

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

|DataDirectory|会被自动解析到App_Data

官方文档地址:对 |DataDirectory| 替代字符串和 Web 应用程序根目录运算符 (~) 的支持

3、注意事项

1)|DataDirectory|  仅能应指定在路径的开头,放在任何其他位置将得不到解析。 如 |DataDirectory|\FnDB.mdf被解析为 项目根目录\App_Data\FnDB.mdf,而\data\|DataDirectory| \FnDB.mdf 则视为物理路径,不会对|DataDirectory|做解析)

2)|DataDirectory| 在WebForm项目下默认为 项目根目录\App_Data文件夹,在Winform和控制台项目下,则为 项目根目录\bin\debug 或 项目根目录\bin\release 文件夹

对于Winform和控制台项目,一般使用AppDomain.CurrentDomain辅助类,即可以通过AppDomain.CurrentDomain.setData("DataDirectory","个人目录字符串") 来自定义|DataDirectory|的对应路径,接着去除掉debug模式和release模式的路径不同之处。此处需要注意的是,发布程序的时候,数据库也要放到App_Data目录下面,示例代码如下:

static void Main(string[] args) 
{string catalogue = AppDomain.CurrentDomain.BaseDirectory;if (catalogue.IndexOf("\\bin\\") > 0) {if (catalogue.EndsWith("\\bin\\Debug\\"))catalogue = catalogue.Replace("\\bin\\Debug", "");if (catalogue.EndsWith("\\bin\\Release\\"))catalogue = catalogue.Replace("\\bin\\Release", "");}if (!catalogue.EndsWith("App_Data\\"))catalogue = catalogue + "App_Data\\";AppDomain.CurrentDomain.SetData("DataDirectory", catalogue);
}

亦或者如下代码:

static void Main(string[] args) {string catalogue = AppDomain.CurrentDomain.BaseDirectory;if(catalogue.EndsWith(@"\bin\Debug\") || catalogue.EndsWith(@"\bin\Release\")){catalogue =  System.IO.Directory.GetParent(catalogue).Parent.Parent.FullName  +  "\\App_Data";  AppDomain.CurrentDomain.SetData("DataDirectory", catalogue);    }
}

数据库连接配置文件与本项目Web.config配置完全相同,注意在WinForm中并不存在App_Data文件夹这个特殊文件夹,我们只需新建文件夹改名为App_Data,然后将数据库文件放入该文件夹即可。

 

若本文有帮助到阅读本文的同学,欢迎点赞、关注、收藏,互相学习交流。 


http://www.ppmy.cn/news/654902.html

相关文章

Python打包工具 Pyinstaller使用教程(将.py以及Python解释器和相关库打包可执行文件)

文章目录 pyinstaller历史背景工作原理使用方法简介使用方法详解&#xff08;请仔细阅读help文档中文翻译&#xff09;help文档help文档中文翻译 简单使用示例1. 编译打包2. 拷贝到目标系统3. 运行&#xff08;遇到问题&#xff09; 如何使用xxx.spec文件重新编译配置项示例配置…

达人评测i5 1240p 和 i7 1165g7选哪个好

i5-1240P处理器具有4个性能核心&#xff0c;8个效能核心&#xff0c;总计12核心&#xff0c;16线程。12MB三级缓存&#xff0c;最大频率4.4GHz。锐炬Xe集成显卡有80EU&#xff0c;频率最高1.3GHz。CPU基础功率28W&#xff0c;最大功率64W&#xff0c;多线程性能提升可达70%。选…

学生用计算机配置,学生一般用什么配置的电脑?

具体看自己需求&#xff0c;挑选方法如下&#xff1a; 1&#xff0c;cpu的性能&#xff1a;这是选电脑时首先要考虑的&#xff0c;而cpu的性能主要体现在其运行程序的速度。现在笔记本更新换代非常快&#xff0c;现在是7&#xff0c;马上是8&#xff0c;所以最好买最新的一代。…

npm报错(npm ERR! Unexpected token ‘.‘)

使用 nvm 将 node 切换到高版本后&#xff0c;运行 npm 相关的命令报的这个错 解决办法&#xff1a; 1、通过nvm list 命令查看当前都安装的node版本列表&#xff0c;依次通过 nvm uninstall [version] 命令将已经安装的 node 版本依次删除。 [version] 代表 node 版本号。 2…

970M显卡超频

970M显卡超频 BGA封装 winR 打开运行 输入cmd 打开命令行 命令行进行如下输入 清除当前路径 cd/输入nvflash.exe及nvflash32.sys文件夹路径 例如我将文件夹nvflash放在C盘根目录 cd nvflash解锁显卡写保护 nvflash --protectoff进行显卡超频 nvflash -6 oc7.romoc7.rom是…

优炫软件自主研发再结硕果,共享存储SRAC集群数据库重磅发布

新一轮科技革命重塑全球经济结构&#xff0c;关键核心技术是产业发展的基石&#xff0c;数据库、芯片、操作系统是我国数字技术领域三大卡脖子难题。数据库向下发挥硬件算力&#xff0c;向上使能应用系统&#xff0c;是各行各业业务系统运行的基础&#xff0c;是软件行业皇冠上…

魏副业而战:视频带货借助热点,这个账号月赚20w+

我是魏哥&#xff0c;与其在家躺平&#xff0c;不如魏副业而战&#xff01; 最近魏哥一直在研究短视频&#xff0c;每天刷刷抖音&#xff0c;经常刷到高考相关的视频。 本来高考跟我没关&#xff0c;毕竟孩子还小&#xff0c;但是刷得多了&#xff0c;魏哥发现有情况。 像这个…

B2C大点名:国内B2C网站收集(更新至2009年6月2日)

转自艾瑞网 作者&#xff1a;艾瑞网专家&#xff0d;刘爽 1.综合&#xff1a; http://www.amazon.cn&#xff08;卓越&#xff09; http://www.dangdang.com&#xff08;当当&#xff09; http://www.2688.com http://www.d1.com.cn&#xff08;D1便利网&#xff09; ht…