C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

VB.NETによるFluentFTPのログセッションについて /HYDE2019 (19/07/12(Fri) 12:10) #91598
Re[1]: VB.NETによるFluentFTPのログセッションについて /はまぐり (19/07/12(Fri) 13:06) #91599
  └ Re[2]: VB.NETによるFluentFTPのログセッションについて /はまぐり (19/07/12(Fri) 13:10) #91600
    └ Re[3]: VB.NETによるFluentFTPのログセッションについて /Hongliang (19/07/12(Fri) 13:29) #91601
      └ Re[4]: VB.NETによるFluentFTPのログセッションについて /HYDE2019 (19/07/12(Fri) 13:53) #91603 解決済み


親記事 / ▼[ 91599 ]
■91598 / 親階層)  VB.NETによるFluentFTPのログセッションについて
□投稿者/ HYDE2019 (5回)-(2019/07/12(Fri) 12:10:08)

分類:[.NET 全般] 

VB.NETの初心者になります。

VB.NETでFluentFTPを使って転送しようとしています。
ログが取得できるため、個別にメール添付で送ろうとしていますが、
メール添付の際に「System.IO.IOException 別のプロセスで使用されているため・・・」
のエラーでメール添付が出来ません。
どうやらFluentFTPのFTPTrace.AddListener がつかんでしまっているようです。

Class FTP

 FtpTrace.AddListener(New TextWriterTraceListener("D:\LOG.txt"))

 Dim hoge As New FtpClient("ftp://192.168.1.2/") '同じセグメント内のIIS仮サーバーに送っています
 hoge.Credentials = New Net.NetworkCredential("USER","PASSWORD")
 hoge.Connect()
 hoge.UploadFile(itm, "D:\DATA1.txt")
 hoge.Disconnect()

End Class

Class Mail

 Dim MSG As New Net.Mail.MailMessage()
 Dim FTPLOG As New Net.Mail.Attachment("D:\LOG.txt")
 MSG.To.Add(New Net.Mail.MailAddress("a@bbb"))
 MSG.Attachments.Add(FTPLOG)
 ・・・

End Class

としていますが、
Dim FTPLOG As・・・でSystem.IO.IOExceptionエラーが発生します。

すいませんが、FtpTrace.AddListenerのセッションの切り方を教えてください。
よろしくお願い致します。

[ □ Tree ] 返信 編集キー/

▲[ 91598 ] / ▼[ 91600 ]
■91599 / 1階層)  Re[1]: VB.NETによるFluentFTPのログセッションについて
□投稿者/ はまぐり (77回)-(2019/07/12(Fri) 13:06:49)
No91598 (HYDE2019 さん) に返信

Usingで囲ってみるとか

Using listener As New TextWriterTraceListener("D:\LOG.txt")
 FtpTrace.AddListener(listener)

 Dim hoge As New FtpClient("ftp://192.168.1.2/") '同じセグメント内のIIS仮サーバーに送っています
 hoge.Credentials = New Net.NetworkCredential("USER","PASSWORD")
 hoge.Connect()
 hoge.UploadFile(itm, "D:\DATA1.txt")
 hoge.Disconnect()
End Using

[ 親 91598 / □ Tree ] 返信 編集キー/

▲[ 91599 ] / ▼[ 91601 ]
■91600 / 2階層)  Re[2]: VB.NETによるFluentFTPのログセッションについて
□投稿者/ はまぐり (78回)-(2019/07/12(Fri) 13:10:16)
No91599 (はまぐり さん) に返信

RemoveListenerも必要かも
順番は

Listener作成
  AddListener
  RemoveListener
Lintener破棄

[ 親 91598 / □ Tree ] 返信 編集キー/

▲[ 91600 ] / ▼[ 91603 ]
■91601 / 3階層)  Re[3]: VB.NETによるFluentFTPのログセッションについて
□投稿者/ Hongliang (840回)-(2019/07/12(Fri) 13:29:37)
適切なFileShareを与えたFileStreamを使うのが良いかと。

New TextWriterTraceListenerの引数に
New FileStream(path, FileMode.Append, FileAccess.Write, FileShare.Read)
' FileMode.AppendかFileMode.Createかは利用者さん次第ですが

New Attachmentの引数に
New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Write)

なお、メールを送信した後のMailMessageを確実にDisposeするために以下のようにすべきです。
Using msg As New MailMessage
  ' なんやらかんやら
  smtp.Send(msg)
End Using
これでAttachmentに設定したFileStreamも自動的にDisposeされます。

[ 親 91598 / □ Tree ] 返信 編集キー/

▲[ 91601 ] / 返信無し
■91603 / 4階層)  Re[4]: VB.NETによるFluentFTPのログセッションについて
□投稿者/ HYDE2019 (7回)-(2019/07/12(Fri) 13:53:50)
□はまぐりさん、ありがとうございます。

 両方ともに実行してみたところ、両方ともにセッションが切れました。
 ありがとうございました!
 宣言の仕方も大変勉強になりました。



□Hongliangさん、ありがとうございます。

 なるほど、メールもUsingでしっかりと切った方がよいのですね。
 とっても勉強になりました。



※お二人方、スピーディなご投稿をありがとうございました。
 2日悩んでいたものが、一瞬で解決しました。
 本当にありがとうございました。
 また分からないことがありましたら、是非とも教えてください。

 感謝申し上げますm(_ _)m




No91601 (Hongliang さん) に返信
> 適切なFileShareを与えたFileStreamを使うのが良いかと。
>
> New TextWriterTraceListenerの引数に
> New FileStream(path, FileMode.Append, FileAccess.Write, FileShare.Read)
> ' FileMode.AppendかFileMode.Createかは利用者さん次第ですが
>
> New Attachmentの引数に
> New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Write)
>
> なお、メールを送信した後のMailMessageを確実にDisposeするために以下のようにすべきです。
> Using msg As New MailMessage
> ' なんやらかんやら
> smtp.Send(msg)
> End Using
> これでAttachmentに設定したFileStreamも自動的にDisposeされます。


>■No91599 (はまぐり さん) に返信
>
>RemoveListenerも必要かも
>順番は
>
>Listener作成
> AddListener
> RemoveListener
>Lintener破棄
解決済み
[ 親 91598 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -