2013-07-18 2 views
0

Я искал вокруг stackoverflow о том, как сделать относительный файл, и попробовал разные вещи, и он не работал, и я надеялся увидеть, могли бы вы, ребята, помочь мне вне.Как получить относительный путь в файле 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 05-12-2013 (конфликтная копия Исфаханиана 2013- 06-24) ConnectionString "]. ConnectionString + Server.MapPath (@" .. \ .. \ Anderson \ 2007 База данных 05-12-2011 (конфликтная копия Исфаханиана 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' возвращает действительное значение? –

Смежные вопросы