0

私は以下を使用しています

var inputPath = "file:" + fileName.Replace(@"\", @"/");
var uri = new Uri(inputPath);
var client = new WebClient();
client.DownloadFile(uri, downloadPath);

ファイル名を含む「file://*」はブラウザで直接開きます。

ファイルはサーバーに格納されており、ローカルホストを使用して VS2012 の DEBUG から実行するとアクセスしてダウンロードできますが、ブラウザーに入力して DEV サーバー バージョンに接続すると、ファイルがダウンロードされません。

アプリ プールを AppPoolIdentity で動作させることができないため、アプリ プールは私の名前で実行されています。ファイルの場所のフォルダー パスをフル コントロールできます。これがすべてセキュリティ上の問題であった場合に備えて、ANONYMOUS と Everyone も同様です。

DEV ボックスなので、ファイアウォールを完全に削除して、ファイアウォールがダウンロードをブロックしているかどうかを確認しました。

Chrome ブラウザーから F12 キーを押して実行すると、DownloadFile の実行時にコードのセクションに 200 'OK' のステータス コードがあることがわかります。したがって、エラーはなく、downloadPath の場所に保存されません。

これを以前に見たことがある場合は、アドバイスしてください。

4

2 に答える 2

1

これは、プロキシ設定の問題である可能性があります。

<configuration>
 <system.net>
  <defaultProxy>
   <proxy
    usesystemdefaults="true"
    proxyaddress="http://192.168.1.10:3128"
    bypassonlocal="true"
   />
   <bypasslist
    <add address="[a-z]+\.contoso\.com" />
   </bypasslist>
  </defaultProxy>
 </system.net>

ここで設定を参照してください

または、 fiddlerを使用して問題を調べることもできます。

于 2013-06-20T12:51:07.693 に答える
0

たくさん調べた後、他の人には明らかな回避策を見つけました。私は ajax 呼び出しを使用してアクションを呼び出してファイルをダウンロードしようとしていました。これはただ座っているように見えましたが、エラーはなかったので、F12 でログに表示された呼び出しをクリックすると、ファイルがダウンロードされました。

href を使用するようにプロセスを移動しました"http://ip/website/action?fileName=" + fileName

これは、使用しているブラウザのデフォルトのダウンロード機能を使用するため、Chrome と IE で機能します。Firefox はまだ試していません。

于 2013-06-26T14:01:24.557 に答える