C# Querystring中的问号,Server.MapPath返回错误
我正在开发一个web应用程序。在这里,我将附件/上载存储在服务器物理目录中。上载的父文件夹可能包含特殊字符,如“?” URL示例C# Querystring中的问号,Server.MapPath返回错误,c#,asp.net,asp.net-mvc,query-string,server.mappath,C#,Asp.net,Asp.net Mvc,Query String,Server.mappath,我正在开发一个web应用程序。在这里,我将附件/上载存储在服务器物理目录中。上载的父文件夹可能包含特殊字符,如“?” URL示例 "~/ChapterFiles/Capgeminisdfsdf_BE CSE ?_CoverPic/CoverPic.jpg" 当我在这个URL上执行,Server.MapPath()时,我得到一个错误“路径中的非法字符。” 无法从文件夹名称中删除问号,因为它是要求的一部分。请提出一个解决方案,我需要紧急修复它 您需要在字符串前面使用@符号。如下 @"~/Chapt
"~/ChapterFiles/Capgeminisdfsdf_BE CSE ?_CoverPic/CoverPic.jpg"
当我在这个URL上执行,Server.MapPath()
时,我得到一个错误“路径中的非法字符。”
无法从文件夹名称中删除问号,因为它是要求的一部分。请提出一个解决方案,我需要紧急修复它 您需要在字符串前面使用
@
符号。如下
@"~/ChapterFiles/Capgeminisdfsdf_BE CSE ?_CoverPic/CoverPic.jpg"
您可以使用以下内容:
String absoluteDir = Server.MapPath("~");
String myRelativePath = "~/ChapterFiles/Capgeminisdfsdf_BE CSE ? _CoverPic/CoverPic.jpg".Replace("/","\\");
String absolutePath = Path.Combine(absoluteDir,myRelativePath);
它会起作用的。我建议您为此函数编写一些单元测试。使用
HttpServerUtility.UrlEncode
和UrlDecode
对字符串进行编码/解码 。您当前形式的需求无法实现,并且没有“修复”。您需要重新考虑如何将URL映射到文件夹和文件名。是否要替换该URL?我要处理查询字符串中的问号。无法替换,则它不会映射到服务器上的物理位置