WCF&x2B;SmtpClient:仅适用于Windows 2008环境

WCF&x2B;SmtpClient:仅适用于Windows 2008环境,wcf,windows-services,smtpclient,basichttpbinding,Wcf,Windows Services,Smtpclient,Basichttpbinding,继续从中开始的讨论:我使用windows服务托管WCF邮件发件人。该服务本身非常简单:它使用DataContract获取基本的System.Net.Mail.MailMessage类属性(支持附件-请参阅上述文章,代码由edosoft编写)和System.Net.Mail.SmtpClient类来实际发送电子邮件。使用的.NET框架是3.5SP1(使用VS2008) 请注意,我已经让代码在程序集中工作;练习只是通过使用WCF服务来公开功能。我对端点绑定使用了basicHttpBinding,没有

继续从中开始的讨论:我使用windows服务托管WCF邮件发件人。该服务本身非常简单:它使用DataContract获取基本的
System.Net.Mail.MailMessage
类属性(支持附件-请参阅上述文章,代码由edosoft编写)和
System.Net.Mail.SmtpClient
类来实际发送电子邮件。使用的.NET框架是3.5SP1(使用VS2008)

请注意,我已经让代码在程序集中工作;练习只是通过使用WCF服务来公开功能。我对端点绑定使用了
basicHttpBinding
,没有其他配置

当我在桌面环境(Windows XP)中测试该服务时,我注意到以下几点:

  • 只有在调用WCF服务后的前10-15秒内重新启动windows服务,才能发送电子邮件,否则不会发生任何事情

  • 服务跟踪/日志文件中没有任何异常/错误消息

  • 在运行服务代码时,调用
    SmtpClient.Send(MailMessage msg)
    方法或任何其他地方时,都不会出现异常/错误消息

我使用不同的绑定和配置玩了一段时间,甚至尝试从不同的线程发送消息-没有更改。实际上,我遇到了一个与此问题相关的论坛问题:从ASMX Web服务中调用的相同方法只有在执行IISRESET时才会起作用。我能够通过使用WCF中使用的相同发送代码创建ASMX Web服务来复制这个问题。在IIS下托管WCF服务也没有任何帮助(同样的问题)

然后,我决定在Windows 2008环境中部署该服务(Windows服务托管)-请参阅,原始简单代码中没有任何更改。同样的配置,同样的一切。它马上就起作用了,没有延误,也没有我能发现的任何其他问题。有人知道这个问题吗?我现在将在Windows2003环境中尝试它,但我想知道它是否确实是一个已知的bug/限制,或者它是否与ASMX bug相关(看起来是这样的)。以前有人看过吗

谢谢