1

私のコード:

string dir = "/Users/valeria/Desktop/screening/"+cell;
string remoteUri ="http://www.broadinstitute.org%2Fcmap%2FviewScan.jsp%3Ftype%3DCEL%26scan%3D"+p;
            string pFileName = dir + "/p";

            using (WebClient myWebClient = new WebClient())
            {
                myWebClient.DownloadFile(remoteUri, pFileName);

            }

私のプログラムはファイルを作成しますpFileNameが、次の例外が発生するため、何もダウンロードしません:

未処理の例外: System.Net.WebException: パスの一部が見つかりませんでした "/Users/valeria/Projects/screening/screening/bin/Debug/http:/www.broadinstitute.org/cmap/viewScan.jsp?type= CEL&scan=EC2003090503AA". ---> System.IO.DirectoryNotFoundException: パスの一部が見つかりませんでした "/Users/valeria/Projects/screening/screening/bin/Debug/http:/www.broadinstitute.org/cmap/viewScan.jsp?type =CEL&scan=EC2003090503AA"

どうしたの?

4

3 に答える 3

2

エスケープされた URI は確かに役に立ちません。URL エンコードは通常、エンコードするアイテムが URL に追加される場合にのみ使用されます。URL 自体をエンコードする必要はなく、他の問題が発生する可能性があります。

変更することを強くお勧めします

  string remoteUri="http://www.broadinstitute.org%2Fcmap%2FviewScan.jsp%3Ftype%3DCEL%26scan%3D"+p;

  string remoteUri ="http://www.broadinstitute.org/cmap/viewScan.jsp?type=CEL&scan="+p;

そして再試行。

于 2013-07-25T22:02:22.413 に答える
0

コードには 2 つの問題があります。

1: エンコードされた Uri を使用しているため、System.Web.HttpUtility を使用して Uri をデコードする必要があります。

string decodedUri = HttpUtility.UrlDecode(remoteUri);

次に、適切な Uri を取得します。

http://www.broadinstitute.org/cmap/viewScan.jsp?type=CEL&scan=EC2003090503AA

どちらに渡す必要がありますmyWebClient

myWebClient.DownloadFile(decodedUri, pFileName);

2:cell変数が url を指しているため、修正する必要があります。string.Empty一時的に割り当てるか削除して、そのソリューションが機能するかどうかを確認できます。

于 2013-07-25T22:12:41.953 に答える