尝试访问C#程序后面的代码中的文件时,我的Web程序出错,目录名和文件名之间有反斜杠。该文件的地址进入我的网页,查询值为'deaths \ bakerd.htm'。但是,浏览器会将其转换为“deaths%08akerd.htm”。
网页中的网址为
'http://localhost:57602/obitm.aspx?url=deaths%08akerd.htm'
并说无法找到网页,但网页obitm.aspx确实存在,那为什么会说不呢?
如果我手动将Windows资源管理器中查询值的值更改为“deaths / bakerd.htm”,则在浏览器中作为查询值进入时,它不会进行任何转换,并且我可以访问该文件我的C#程序。
我尝试使用
更改javascript中的查询值 thisurl = url.replace("\\", "/")
但这并没有改变任何事情。
我的C#程序中没有尝试过任何转换。那么我如何以编程方式将'\'更改为'/'?我不知道为什么会这样,而且非常令人困惑。任何帮助表示赞赏。
答案 0 :(得分:5)
只是将\ n转换为/在URL字符串中对您不起作用,因为在这种情况下,“\ b”将变为退格符,该符号将被编码到%08中 - 这是ASCII的十六进制值相当于退格字符。
要解决这一问题,您可以将“%08”转换为字符串“/ B”,但是对于各种字符有很多HTML codes,这对您来说不会有效或有趣
您从哪里获取包含文件名名称的原始字符串? 如果它是您可以控制的内容,则在读取文件的路径/名称时以及在将URL传递给Web App之前将“\”转换为“/”。
您也可以在发送之前对路径进行HTMLEncode,以便字符串变为
http://localhost:57602/obitm.aspx?url=deaths%92Bakerd.htm'
答案 1 :(得分:2)
尝试使用@ symbol
前缀来使用逐字字符串string url = @"http://localhost:57602/obitm.aspx?url=deaths\bakerd.htm".Replace("\\","/").ToString();
答案 2 :(得分:0)
尝试thisurl = url.Replace("\\", "/");
就像在javascript中一样。
答案 3 :(得分:0)
要解析查询字符串参数,您可以使用:
NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
或者你可以:
HttpUtility.UrlEncode(Request.QueryString["url"]);