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

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

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

VB.NETによるFluentFTPのログセッションについて

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■91598 / inTopicNo.1)  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のセッションの切り方を教えてください。
よろしくお願い致します。

引用返信 編集キー/
■91599 / inTopicNo.2)  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

引用返信 編集キー/
■91600 / inTopicNo.3)  Re[2]: VB.NETによるFluentFTPのログセッションについて
□投稿者/ はまぐり (78回)-(2019/07/12(Fri) 13:10:16)
No91599 (はまぐり さん) に返信

RemoveListenerも必要かも
順番は

Listener作成
  AddListener
  RemoveListener
Lintener破棄

引用返信 編集キー/
■91601 / inTopicNo.4)  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されます。

引用返信 編集キー/
■91603 / inTopicNo.5)  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破棄
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ