【问题标题】:How to get a relative path in a web.config file如何在 web.config 文件中获取相对路径
【发布时间】:2013-07-17 17:22:22
【问题描述】:

我在stackoverflow上搜索了如何制作相关文件并尝试了各种方法,但都没有成功,我希望看看你们是否可以帮助我。

这是我的 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

那我到底做错了什么

【问题讨论】:

  • 我不会在连接字符串中使用'。而且我不会在目录名称上使用撇号,即使支持只是因为许多库不能很好地处理这个问题。尝试删除它,看看是否有帮助。
  • 我会先选择一个简单而简短的名称值,它不包含任何特殊字符。
  • 我现在收到这个错误 CS1012: Too many characters in character literal

标签: c# asp.net


【解决方案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"

【讨论】:

  • 当我将其更改为第一种方法时,我收到此错误:对象引用未设置为对象的实例。
  • 您确定ConfigurationManager .ConnectionStrings["2007 Database 05-12-2013(Esfahanian's conflicted copy 2013-06-24) ConnectionString"] .ConnectionString 正在返回一个有效值吗?
  • 删除粗体部分,看看是否仍然出现对象引用错误:字符串 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 的冲突副本 2013-06-24).mdb");
  • 是的,我仍然遇到同样的错误,这到底是什么意思?
  • 这意味着您对ConfigurationManager.ConnectionStrings[...] 的调用没有返回任何内容。您需要检查配置文件中连接字符串的名称才能正确调用它。如果您的连接字符串看起来像&lt;configuration&gt; &lt;connectionStrings&gt; &lt;add name="Target" connectionString="server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" /&gt; &lt;/connectionStrings&gt; &lt;/configuration&gt;,那么您将访问就像这样ConfigurationManager.ConnectionStrings["Target"]
【解决方案2】:

您在路径字符串中使用了 \,但那是文字的符号。 所以 \ 后面的任何字符都将被解释为像 \ 这样的文字。不是有效的字符。 您实际上想要文字 \ 其序列为 \\ 字符串的 @infront 也告诉您不需要文字。

所以 mappath(" 需要是 mappath(@" 或者每个 \ 都需要成为 \\

【讨论】:

  • 你能不能解释一下
  • 当我把它改成这样:string connectionString = ConfigurationManager.ConnectionStrings["2007 Database 05-12-2013(Esfahanian's conflicted copy 2013-06-24) ConnectionString"].ConnectionString + Server.MapPath( @"..\..\Anderson\2007 数据库 05-12-2011 (Esfahanian 的冲突副本 2013-06-24).mdb");我收到此错误:对象引用未设置为对象的实例。
猜你喜欢
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 2013-12-19
  • 2015-09-25
相关资源
最近更新 更多