議論の続きは別の投稿で始まりました:私はWindowsサービスを使用してWCFメール送信者をホストしました。サービス自体は非常に単純です。DataContractを使用して基本的なSystem.Net.Mail.MailMessage
クラスプロパティ(添付ファイルをサポートします。前述の投稿、edosoftによるコードを参照してください)とSystem.Net.Mail.SmtpClient
クラスを使用して実際に電子メールを送信します。使用された.NETFrameworkは3.5SP1(VS2008を使用)でした。
アセンブリ内ですでにコードが機能していることに注意してください。演習は、WCFサービスを使用して機能を公開することだけでした。basicHttpBinding
エンドポイントバインディングに使用しましたが、追加の構成はありません。
デスクトップ環境(Windows XP)でサービスをテストしたところ、次のことに気づきました。
電子メールは、WCFサービスを呼び出してから最初の10〜15秒以内にWindowsサービスを再起動した場合にのみ送信されました。それ以外の場合は、何も起こりません。
サービストレース/ログファイルには例外/エラーメッセージはありません。
SmtpClient.Send(MailMessage msg)
メソッドを呼び出したり、サービスコードを実行したりするときに、例外/エラーメッセージは表示されません。
私はしばらくの間、さまざまなバインディングと構成で遊んでいましたが、別のスレッドからメッセージを送信しようとしても、変更はありませんでした。私は実際にこの問題に関連するフォーラムの質問に出くわしました。ASMXWebサービス内から呼び出された同じメソッドは、IISRESETが実行された場合にのみ機能します。WCFで使用されているのと同じ送信コードを使用してASMXWebサービスを作成することで、この問題を再現することができました。IISでWCFサービスをホストすることも役に立ちませんでした(同じ問題)。
次に、Windows 2008環境(Windowsサービスがホストされている)にサービスを展開することにしました。元の単純なコードに変更はありません。同じ構成、同じすべて。それはすぐに機能し、遅延や私が特定できるその他の問題はありませんでした。誰かがこの問題について何か考えを持っていますか?今からWindows2003環境で試してみますが、それが実際に既知のバグ/制限であるのか、それともASMXのバグに関連しているのか(見たところ)を知りたいのです。誰かが以前にそれを見たことがありますか?
ありがとう、