- PR -

ASP.NET ファイルダウンロード時に0バイトになる。

1
投稿者投稿内容
todo
会議室デビュー日: 2008/01/17
投稿数: 2
投稿日時: 2008-01-17 00:08
現在、VisualStudio2005を使用してWebプログラムを作成しています。

AP Server上にあるファイル(Word)をボタンを押下するとダウンロードする機能を
作成しているのですが、ファイルのダウンロード画面で「保存」を選択すると、
ファイルサイズが0バイトとなってしまいます。

色々と調べて、以下の方法を試してみたのですが、うまくいきません。
・Web公開するフォルダにASP.NET実行ユーザー(NETWORK SERVICE)の
 権限を追加。
・MetaBase.xmlの内容チェック
 (ダウンロードファイルは数10KBなので問題ないはず)

開発PC(WinXpPro SP2)ではできるので、IISのセキュリティ関係ではないかと思う
のですが、原因が特定できていません。

ヒントや解決方法をご存知の方がいましたら、ご教授ください。

Win2003Server R2
IIS6.0
VisualStudio2005(C#)



----- ボタン押下時のソース -------------------------------------
protected void Button1_Click(object sender, EventArgs e)
{
string phyPath = Server.MapPath("~/upload/WordTest.doc");
if (!File.Exists(phyPath))
{
AlertMessage(phyPath + " File Nothing!!", MsgType.OK);
return;
}
FileInfo fileInfo = new FileInfo(phyPath);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fileInfo.Name));
Response.AddHeader("Content-Length", "attachment; filename=" + fileInfo.Length.ToString());
Response.ContentType = "application/msword";
Response.WriteFile(fileInfo.FullName);
Response.End();
Response.Flush();
}
----- ボタン押下時のソース -------------------------------------


まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2008-01-17 09:52
引用:

Response.AddHeader("Content-Length", "attachment; filename=" + fileInfo.Length.ToString());


わざわざ Content-Length ヘッダを追加して、しかも内容がおかしいんですけど。
そもそもこの行不要では?

引用:

todoさんの書き込み (2008-01-17 00:08) より:
現在、VisualStudio2005を使用してWebプログラムを作成しています。

AP Server上にあるファイル(Word)をボタンを押下するとダウンロードする機能を
作成しているのですが、ファイルのダウンロード画面で「保存」を選択すると、
ファイルサイズが0バイトとなってしまいます。

色々と調べて、以下の方法を試してみたのですが、うまくいきません。
・Web公開するフォルダにASP.NET実行ユーザー(NETWORK SERVICE)の
 権限を追加。
・MetaBase.xmlの内容チェック
 (ダウンロードファイルは数10KBなので問題ないはず)

開発PC(WinXpPro SP2)ではできるので、IISのセキュリティ関係ではないかと思う
のですが、原因が特定できていません。

ヒントや解決方法をご存知の方がいましたら、ご教授ください。

Win2003Server R2
IIS6.0
VisualStudio2005(C#)



----- ボタン押下時のソース -------------------------------------
protected void Button1_Click(object sender, EventArgs e)
{
string phyPath = Server.MapPath("~/upload/WordTest.doc");
if (!File.Exists(phyPath))
{
AlertMessage(phyPath + " File Nothing!!", MsgType.OK);
return;
}
FileInfo fileInfo = new FileInfo(phyPath);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fileInfo.Name));
Response.AddHeader("Content-Length", "attachment; filename=" + fileInfo.Length.ToString());
Response.ContentType = "application/msword";
Response.WriteFile(fileInfo.FullName);
Response.End();
Response.Flush();
}
----- ボタン押下時のソース -------------------------------------




pitfall
会議室デビュー日: 2007/12/05
投稿数: 14
お住まい・勤務地: 東京都
投稿日時: 2008-01-17 10:01
ソースをコピペしたら再現しましたが、まるくさんのおっしゃる箇所をコメントアウトしたら正常動作しましたよ。
todo
会議室デビュー日: 2008/01/17
投稿数: 2
投稿日時: 2008-01-17 13:14
まるくさん、pitfallさん、アドバイスありがとうございます。

まるくさんのご指摘の箇所をコメントアウトしたら、ファイルダウンロードが
できました。

ありがとうございました。
1

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