2013-07-18 205 views
0

我搜索了如何制作相关文件并尝试过各种各样的东西,但没有奏效,我希望看看你们是否可以帮助我出。如何在web.config文件中获取相对路径

这里是我的web.config文件我的连接刺痛:

<add name="2007 Database 05-12-2013(Esfahanian's conflicted copy 2013-06-24) 
    ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data 
    Source=" providerName="System.Data.OleDb"/> 

这里相对路径在我aspx文件:

<script runat="server"> 
    string connectionString = ConfigurationManager 
    .ConnectionStrings["2007 Database 
    05-12-2013(Esfahanian's conflicted copy 2013-06-24) ConnectionString"] 
    .ConnectionString + Server.MapPath("..\..\Anderson\2007 
    Database 05-12-2011 (Esfahanian's conflicted copy 2013-06-24).mdb"); 
</script> 

而且我得到这个错误:CS1009: Unrecognized escape sequence

那么究竟是什么做错了

+1

我不会用'''在一个连接字符串。即使支持目录名,我也不会使用撇号,因为许多库不能很好地处理这个问题。尝试删除它,看看是否有帮助。 – Icarus

+0

我首先选择一个简单和短名称的值,它不包含任何特殊字符。 –

+0

现在我得到这个错误CS1012:字符文字太多字符 – foobar2023

回答

0

你是在你的路径字符串中使用\,但那是文字的符号。 因此,\之后的任何字符都将被解释为像\那样的文字。不是有效的字符。 你真的想要文字\的顺序是\\ 也@字符串infront说明你不想要文字。

所以在MapPath(“必须在MapPath(@”或每\需要变得\\

+0

可以请你解释一下更好 – foobar2023

+0

当我改变它为:string connectionString = ConfigurationManager.ConnectionStrings [“2007 Database 05-12-2013(Esfahanian's conflicted copy 2013- 06-24)ConnectionString“] .ConnectionString + Server.MapPath(@”.. \ .. \ Anderson \ 2007 Database 05-12-2011(Esfahanian's conflicted copy 2013-06-24).mdb“);我得到这个错误:对象引用未设置为对象的实例。 – foobar2023

1

你没有逃脱‘\’字符在你的路径,以便它在MapPath()方法导致错误。

更改此:

Server.MapPath("..\..\Anderson\2007 Database 05-12-2011 (Esfahanian's conflicted copy 2013-06-24).mdb"

这样:

Server.MapPath(@"..\..\Anderson\2007 Database 05-12-2011 (Esfahanian's conflicted copy 2013-06-24).mdb"

或本:

Server.MapPath("..\\..\\Anderson\\2007 Database 05-12-2011 (Esfahanian's conflicted copy 2013-06-24).mdb"

+0

第一种是易读性的首选方法。 – AntLaC

+0

当我将其更改为第一个方法时,出现此错误:未将对象引用设置为对象的实例。 – foobar2023

+0

您确定ConfigurationManager .ConnectionStrings [“2007数据库 05-12-2013(Esfahanian的冲突副本2013-06-24)ConnectionString”] .ConnectionString'返回一个有效值吗? –