Многие друзья обеспокоены проблемой относительного пути к базе данных ACCESS в программе .net, из-за чего им приходится изменять web.config каждый раз, когда они перемещают программу.
Путь к базе данных в строке подключения к базе данных.
Многие люди пишут в своем web.config следующее:
<Настройки приложения>
Программа написана так:
MyConn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OLEDBCONNECTIONSTRING"]);//Примечание. Настройки конфигурации написаны по-разному в VS2005 и VS2003. Проверьте конкретные различия самостоятельно.
Таким образом, при запуске программы возникнут такие ошибки. поскольку часто запрашивается следующее:
«C:WINDOWSsystem32~App_DataData.mdb» не является допустимым путем. Определите, правильно ли написано имя пути и подключены ли вы к серверу, на котором хранится файл. Источник данных=~App_DataData.mdb
Даже если абсолютный путь правильный, web.config необходимо изменить при пересадке программы, так что это более хлопотно.
Существуют также способы использования Server.MapPath, например ASP в web.config, для получения пути к базе данных, но web.config не распознает Server.MapPath, поэтому этот метод не работает.
Позже, исследуя и ссылаясь на другие программы, я пришел к следующему методу, который позволяет легко перенести путь к программе без необходимости изменения пути к базе данных ACCESS.
В web.config я написал следующее:
В классе доступа к данным в программе я вынул "SQLConnString" и "dbPath" и соединил их в строку "CONN_STRING_NON_DTC"
общедоступная статическая строка только для чтения CONN_STRING_NON_DTC = System.Configuration.ConfigurationManager.AppSettings["SQLConnString"].ToString() + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";
Это метод записи в VS2005. Для простоты использования я определил CONN_STRING_NON_DTC как статический только для чтения.
Что ж, таким образом вы можете пересадить свою программу по своему желанию, не заботясь о пути к базе данных, раз и навсегда ^_^, подходит для ленивых людей вроде меня!