- PR -

Response.WriteFileでネットワーク上のファイルがダウンロード出来ない

1
投稿者投稿内容
T・Y
会議室デビュー日: 2008/12/08
投稿数: 2
投稿日時: 2008-12-08 21:25
ASP.NETで下記ソースでファイルのダウンロードの処理を作成中です。

response.ContentType = "application/octet-stream";
response.AddHeader("Content-Disposition","attachment;filename=00000.dwg");
response.Flush();
response.WriteFile("\\B\bbb\2023920081009145854.dwg");
response.Flush();
response.Close();
response.End();

ファイルのダウンロードのダイアログが表示され、
dwg形式のファイルがローカルに保存されたが、元のファイルと異なるサイズで保存される。(テキストで確認すると、aspxファイルのソースが書かれていた。)

response.WriteFile部分でのファイルのフルパスが取得出来ていないからだとは思いますが、
原因がわからず行き詰っています。

原因等分かる方がいれば教えて頂きたく、よろしくお願いします。

WEBサーバ(A)からサーバ(B)の共有フォルダbbbのファイルをダウンロードします。

環境は
IIS5.1
Windows2000Server
VB.Net 2003
です。

渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-12-08 22:04
引用:

原因がわからず行き詰っています。
原因等分かる方がいれば教えて頂きたく、よろしくお願いします。



ASP.NET アプリケーションを実行するプロセスには、デフォルトでネットワークへのアクセス権が無いからです。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-12-08 22:04
ステップ実行してみたらエラーになってないですか?
ASP.NETを実行しているユーザが共有フォルダにアクセスする権限がないのかもしれないですね。

[追記]
あ、よく見てませんでした。Jittaさんがおっしゃってるとおりでしょうね。
HttpResponse.Flush メソッド
「現在バッファリングされているすべての出力をクライアントへ送信します。 」

[ メッセージ編集済み 編集者: べる 編集日時 2008-12-09 08:45 ]
T・Y
会議室デビュー日: 2008/12/08
投稿数: 2
投稿日時: 2008-12-08 22:41
ご返答ありがとうございます。

>渋木宏明さん
>ASP.NET アプリケーションを実行するプロセスには、
>デフォルトでネットワークへのアクセス権が無いからです。

上記について、
コンピュータの管理でASPNETユーザにグループAdministratorsを設定し、
共有フォルダにeveryoneの権限を追加しましたが、まだファイルのパスが取得出来ていないみたいです。
上記設定の他に何か設定する項目はありますでしょうか?
よろしくお願いします。

渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-12-08 23:48
引用:

コンピュータの管理でASPNETユーザにグループAdministratorsを設定し、



そんなことしちゃダメです。
Web アプリケーションがクラックされたら、何でもし放題になってしまいます。

通常、そのアプリケーションを実行するための専用アカウントを作成して、そのアカウントに共有フォルダへのアクセス(だけ)を許可して対応します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-12-09 08:39
引用:

T・Yさんの書き込み (2008-12-08 21:25) より:
ASP.NETで下記ソースでファイルのダウンロードの処理を作成中です。

response.ContentType = "application/octet-stream";
response.AddHeader("Content-Disposition","attachment;filename=00000.dwg");
response.Flush(); // aspx ファイルの内容が書かれていた原因
response.WriteFile("\Bbbb2023920081009145854.dwg");
response.Flush();
response.Close();
response.End();

ファイルのダウンロードのダイアログが表示され、
dwg形式のファイルがローカルに保存されたが、元のファイルと異なるサイズで保存される。(テキストで確認すると、aspxファイルのソースが書かれていた。)


太字の行は、「response.Clear();」
1

スキルアップ/キャリアアップ(JOB@IT)