2017-08-16 7 views
2

私のasp.netアプリケーションでは、コードの後ろにファイルを書きます。私は、このファイルを以下のようにHandlerに使用したいが、 'Path in Illegal characters in Error'というエラーが出る。なぜ私は理解できないのですか?助けてください。WebClientのファイルパス

以下のファイルの値が「306963020170816111848_Generic_P.pdf」であり、ファイルは間違いなく正しいパスにあなたののUriオーバーロードを使用する必要があります

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

ファイルの文字列の値は何ですか? –

+0

その306963020170816111848_Generic_P.pdf – user2837961

答えて

1

を使用するように変更

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

が存在しますDownloadString方法。これらのパラメータは、URLエンコードされている必要があります。

EDIT:
HttpUtility.UrlEncode(url)も動作するはずです。

+0

2行のコード/例で説明してください。 – user2837961

+0

ブラウザのURLバーに 'http:// test?hello world!'のような文字列を置くと、文字列は自動的に(http:// test /?hello%20world%20!)になります。これは、URLにパラメータを渡すための有効な形式です。 Webクライアント(urlを自動的にエンコードしない)でもこの動作が必要なので、 'HttpUtility.UrlEncode(yourUrl)'を使って特殊文字をエスケープすることができます。 – senz

+0

ありがとうございます。しかし、なぜ私のハンドラのProcessRequestコードに入っていないのですか? – user2837961