- - PR -
ファイルアップロード時にエラーが発生します
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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サービスの中に記述しています。 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2006-02-10 15:52
例外の具体的な型とメッセージは? _________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 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 } } | ||||||||||||
|
投稿日時: 2006-02-10 17:30
すみません、もう少しエラーを調べる術がありました。
エラーの詳細としては、以下の内容となります。 プロセスはファイル "d:\test\test20060209.txt" にアクセスできません。 このファイルは別のプロセスが使用中です。 このエラーは回避可能でしょうか? | ||||||||||||
|
投稿日時: 2006-02-10 17:51
たかが、FullPath を取ったぐらいでこれはありえないような... ためしに、file2 の記述はそのまま残しつつ file1 でアップロードするとどうなりますか? これで正常であれば、やっぱり中身が違うことになりますが。 # 中身はどうやって確認されたかにも因りますね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-02-10 18:04
まずデバッグできるようにしましょう。そうでないと問題解決が難しくなります。 仮にデバッガが使えなくても、例外の型やメッセージを出力する等の努力は出来るはずです。
最初に出されたコードが2番目に出されたコードにありません。どういう事でしょうか。
エディタで開いているとか…。 _________________ 囚人のジレンマな日々 [ メッセージ編集済み 編集者: 囚人 編集日時 2006-02-10 18:05 ] | ||||||||||||
|
投稿日時: 2006-02-10 18:48
ファイルを書いている途中で「検出」が走るとか。 | ||||||||||||
|
投稿日時: 2006-02-10 19:21
file2の記述を残し、file1でアップロードすると正常終了します。 また、中身はStreamWriterを利用してログファイルに記述しています。 writer.WriteLine("[e.FillName] " + e.FillName) ; のような感じです。
Windowsサービスにしているので、その可能性はあるのかもしれません。 しかし、ベタ書きの場合には正常に終了するのが自分自身不可解な部分なのですが。。。 |