2017-08-16 72 views
2

在我的asp.net应用程序中,我正在编写一个代码后面的文件。然后我想把这个文件用到下面的Handler中,但是我得到一个错误'Path in Illegal characters'。我不明白为什么?请帮助。WebClient中的文件路径

文件在下面的值为“306963020170816111848_Generic_P.pdf”,并在文件中正确的路径肯定存在

WebClient client = new WebClient(); 
client.DownloadString(@"Handlers/MyPrintPdf.ashx?PdfFile=" + Server.MapPath("~/Templates/MyFiles/" + files)); // error here 

改为使用

HttpUtility.UrlEncode(@"Handlers/MyPrintPdf.ashx?PdfFile=" + Server.MapPath("~/Templates/MyFiles/" + files)); 
+0

文件字符串的值是多少? –

+0

其306963020170816111848_Generic_P.pdf – user2837961

回答

1

,您应该使用Uri过载你DownloadString方法。这些参数必须经过网址编码。

编辑:
HttpUtility.UrlEncode(url)也应该工作。

+0

你能解释两行代码/例子吗? – user2837961

+0

如果你在你的浏览器地址栏中放入一个类似于'http:// test?hello world!'的字符串,字符串会自动变成'http:// test /?hello%20world%20!'(在chrome上测试) 。这是通过URL传递参数的有效格式。你也需要这种行为在你的webclient(它不会自动编码你的url),所以你可以使用'HttpUtility.UrlEncode(yourUrl)'来转义特殊字符。 – senz

+0

谢谢你的作品。但为什么不进入我的处理程序的ProcessRequest代码? – user2837961