Server.MapPath("/")得到物理路经
value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.Mappath("\db\global.mdb")+";" />
您可以把"db\global.mdb"单独放到web.config的一个属性里,然后程序通过Server.Mappath()得到物理路经物理路径,然后和Provider=Microsoft.Jet.OLEDB.4.0;Data Source=串起来得到完整的数据库连接串
不可以,程序会把Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.Mappath("db\global.mdb")+";当成字符串处理的
//////////
string connectionString = String.Format( ConfigurationSettings.AppSettings["connectionString"].ToString(), System.Web.HttpContext.Current.Server.MapPath( ConfigurationSettings.AppSettings["Db"].ToString() ) );
今天刚巧自己碰到了在web.config设置connectionStrings的问题, 翻了好些书, 只都说sql的设置方法,唯独破access被人遗忘到角落:那是只字未提啊~~
幸好,在visual studio 2005帮助文件里面有提及一些:
经过滑搏测试,这样设置是可以的,但是要放到租用的服务器上面是运行不了的,我需要的是相对路径的如凳设置方法,在c#中虽然可以用 ~ 代替当前路径,可是运行后发现,当前路径在windows\system32\ 那是绝对不行的.
在网上发现有信橡祥人用了特殊字符代替相对路径,然后在页面的后台代码中引用该字符串的时候用Server.MapPath()来代替那个特殊字符! 这个确实是一种好方法!不过还有更好的,就是ApplicationDeployment.DataDirectory----This property is new in the .NET Framework version 2.0.
最好的方法:
web.config配置
...
测试程序
public string OpenDB()
{
string msg;
OleDbConnection MyOleDB = new OleDbConnection();
MyOleDB.ConnectionString = WebConfigurationManager.ConnectionStrings["MyJetConn"].ConnectionString;
try
{
MyOleDB.Open();
msg = "server vision:" + MyOleDB.ServerVersion + "connection is " + MyOleDB.State.ToString();
return (msg);
}
catch (Exception err)
{
msg = err.Message;
return (msg);
}
finally {
MyOleDB.Close();
}
}
输出:
server vision:04.00.0000connection is Open
补充说明:网站的代码的文件夹至少为iis虚拟目录的根目录,否则用本机http调试的时候会出现问题.
比如:
Line 26: ASP.NET to identify an incoming user.
Line 27: -->
Line 28:
Line 29: