2015-04-08 1 views
0

Я работаю над веб-приложением. Здесь я храню вложения/закачки на физический каталог сервера. В родительской папке загрузок могут быть специальные символы, такие как '?'Вопросительный знак в Querystring с Server.MapPath, возвращающий ошибку

Пример URL

"~/ChapterFiles/Capgeminisdfsdf_BE CSE ?_CoverPic/CoverPic.jpg" 

Когда я делаю, Server.MapPath() по этому URL, я получаю сообщение об ошибке "Illegal characters in path."

Не удается удалить знак вопроса из названия папки, как это часть требований. Пожалуйста, предложите решение, мне нужно срочно его исправить.

+0

Вы хотите заменить это? – BNN

+0

http://stackoverflow.com/questions/146134/how-to-remove-illegal-characters-from-path-and-filenames – CodingDefined

+0

Я хочу обработать знак вопроса в строке запроса. Невозможно заменить, тогда он не будет отображаться с физическим расположением на сервере –

ответ

0

Вам нужно использовать знак @ перед строкой. Как ниже

@"~/ChapterFiles/Capgeminisdfsdf_BE CSE ?_CoverPic/CoverPic.jpg" 

Reference link

0

Вы можете использовать что-то вроде:

String absoluteDir = Server.MapPath("~"); 
String myRelativePath = "~/ChapterFiles/Capgeminisdfsdf_BE CSE ? _CoverPic/CoverPic.jpg".Replace("/","\\"); 

String absolutePath = Path.Combine(absoluteDir,myRelativePath); 

Он будет работать. Я советую вам написать некоторые модульные тесты для этой функции.

0

Используйте HttpServerUtility.UrlEncode и UrlDecode для кодирования/декодирования строки.

0

Question marks are not allowed in folder names in Windows. Ваше требование в текущей форме невозможно реализовать, и нет «исправления». Вам нужно переосмыслить, как сопоставить URL-адреса в именах папок и файлов.

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