- PR -

ファイルアップロード時にエラーが発生します

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/06/03
投稿数: 30
投稿日時: 2006-02-10 15:29
現在、ファイルのアップロード処理を作成中です。

処理としては、該当拡張子のファイルを監視し、検出したら
該当ファイルのアップロードを行うというものです。


ファイル監視後、以下のメソッドを呼び出しています。


static void DoTest(object source, FileSystemEventArgs e)
{
try
{
string file1 = @"D:\\test\\test20060209.txt";
string file2 = e.FullPath;

WebClient wc = new WebClient();
byte[] ret = wc.UploadFile("http://localhost/test/test.aspx", file1);
string result = Encoding.ASCII.GetString(ret);
wc.Dispose();

}
catch(Exception ex)
{
}
}

その際、UploadFileの記述部分において、file1 としている場合はOKなのですが、
file2としている場合に、WebClientのエラーとなりました。
(WebClient 要求で例外が発生しました。)

ログで、file1とfile2の出力を行ってみたのですが、同じものとなっています。
何かご存知の情報がありましたら、ご教授願います。

環境は、Windows2000, Visual C# です。
また、上記記述はWindowsサービスの中に記述しています。

よろしくお願いします。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-10 15:52
引用:

(WebClient 要求で例外が発生しました。)


例外の具体的な型とメッセージは?
_________________
囚人のジレンマな日々
未記入
常連さん
会議室デビュー日: 2004/06/03
投稿数: 30
投稿日時: 2006-02-10 17:13
> 例外の具体的な型とメッセージは?
「WebClient 要求で例外が発生しました」というメッセージ以外を表示できていません。

http://localhost/test/test.aspx 側のデバッグがうまくできていません。
ちなみに、以下がhttp://localhost/test/test.aspx.csとなります。

using System;
using System.IO;
using System.Text;
using System.Net;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Diagnostics;

namespace Achievement
{
/// <summary>
/// test の概要の説明です。
/// </summary>
public class test : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// ページを初期化するユーザー コードをここに挿入します。

try
{
HttpPostedFile posted = Request.Files[0];

posted.SaveAs("d:\\work\\upload\\"
+ System.IO.Path.GetFileName(posted.FileName));
}
catch(Exception ex)
{

}
}

#region Web フォーム デザイナで生成されたコード
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: この呼び出しは、ASP.NET Web フォーム デザイナで必要です。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
未記入
常連さん
会議室デビュー日: 2004/06/03
投稿数: 30
投稿日時: 2006-02-10 17:30
すみません、もう少しエラーを調べる術がありました。
エラーの詳細としては、以下の内容となります。

プロセスはファイル "d:\test\test20060209.txt" にアクセスできません。
このファイルは別のプロセスが使用中です。

このエラーは回避可能でしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-10 17:51
引用:

未記入さんの書き込み (2006-02-10 17:30) より:

プロセスはファイル "d:testtest20060209.txt" にアクセスできません。
このファイルは別のプロセスが使用中です。


たかが、FullPath を取ったぐらいでこれはありえないような...

ためしに、file2 の記述はそのまま残しつつ file1 でアップロードするとどうなりますか?
これで正常であれば、やっぱり中身が違うことになりますが。

# 中身はどうやって確認されたかにも因りますね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-10 18:04
引用:

「WebClient 要求で例外が発生しました」というメッセージ以外を表示できていません。

http://localhost/test/test.aspx 側のデバッグがうまくできていません。


まずデバッグできるようにしましょう。そうでないと問題解決が難しくなります。
仮にデバッガが使えなくても、例外の型やメッセージを出力する等の努力は出来るはずです。

引用:

ちなみに、以下がhttp://localhost/test/test.aspx.csとなります。


最初に出されたコードが2番目に出されたコードにありません。どういう事でしょうか。

引用:

プロセスはファイル "d:\\test\\test20060209.txt" にアクセスできません。
このファイルは別のプロセスが使用中です。


エディタで開いているとか…。


_________________
囚人のジレンマな日々

[ メッセージ編集済み 編集者: 囚人 編集日時 2006-02-10 18:05 ]
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-02-10 18:48
引用:

処理としては、該当拡張子のファイルを監視し、検出したら
該当ファイルのアップロードを行うというものです。



ファイルを書いている途中で「検出」が走るとか。
未記入
常連さん
会議室デビュー日: 2004/06/03
投稿数: 30
投稿日時: 2006-02-10 19:21
引用:

たかが、FullPath を取ったぐらいでこれはありえないような...

ためしに、file2 の記述はそのまま残しつつ file1 でアップロードするとどうなりますか?
これで正常であれば、やっぱり中身が違うことになりますが。

# 中身はどうやって確認されたかにも因りますね。



file2の記述を残し、file1でアップロードすると正常終了します。
また、中身はStreamWriterを利用してログファイルに記述しています。
writer.WriteLine("[e.FillName] " + e.FillName) ;
のような感じです。


引用:

ファイルを書いている途中で「検出」が走るとか。


Windowsサービスにしているので、その可能性はあるのかもしれません。
しかし、ベタ書きの場合には正常に終了するのが自分自身不可解な部分なのですが。。。

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