没有密切联系我们在我们的SMTP实现面临的一个问题,我们似乎无法得到解决。SMTP退出的反应做IIS服务
要画的东西出来,这是我们的当前设置:
服务器A的.NET服务运行,处理排队从我们的应用程序的电子邮件(将被发送到客户端生成的报告) 这是通过使用.NET SMTPClient和using块来调用处理smtpclient实例(.NET 4.0),强制发送QUIT命令。
该消息随后被发送到IIS6运行和处理SMTP连接服务器B,发送出的消息传输到客户的邮箱。
现在的问题是(从日志中看到):在服务器A上为.NET服务上的客户端配置将向服务器B发送QUIT。服务器B然后将QUIT命令发送到客户端的邮件主机,并且它的邮件主机似乎以221响应,关闭连接。 但是,服务器B永远不会响应服务器A,因此.NET服务和IIS SMTP服务器之间的连接将保持打开状态,直到它们用完可用连接,并阻止所有新电子邮件。 (有那时大约64K打开的连接)
原理,是这样的:
.NET SMTP服务(服务器)--MSG - > IIS 6 SMTP服务器(服务器B)--MSG- - >客户端
.NET SMTP服务(服务器A)--QUIT - > IIS 6(服务器B)--QUIT - >客户端
.NET SMPT服务(服务器A)< --X - IIS 6(服务器B)< --221(康涅狄格州关闭) - CLIENT这里
任何人都可以指出ö你的问题/知道如何解决这个问题?我一直没能在互联网上找到一个类似的问题...
非常感谢提前!
更新
对于什么是价值:我现在用的ServicePoint.ConnectionLeaseTimeout并将其设置为一个特定的超时,而不是让它开放无限时间尝试。也许这不是最干净的解决方案,但是如果它关闭了服务器之间的所有开放连接,并且在许多服务器保持打开状态时不阻止新的连接,那么我们最初的问题至少可以解决......但是我们需要先做一些测试在此之前可以放心。
您好,感谢您的回答,我还阅读有关QUIT命令错误,但在日志中查找时,该退出的有效发送,只是答案似乎迷失在两个服务器之间。 正如你所建议的那样,我会尝试在MS buglist上发布它,看看它们是否能够解决这个问题。 – user3168628
如果您为一家公司工作并获得批量许可协议,您可能会将一位MS客户经理分配给您的公司,而他的工作就是帮助解决某些问题。或者,如果您有MSDN订阅,您将拥有多个免费的MS支持电话。我使用这些设施的经验是,如果一切都失败了,它们可能会非常有用。 –