2014-01-07 143 views
1

没有密切联系我们在我们的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并将其设置为一个特定的超时,而不是让它开放无限时间尝试。也许这不是最干净的解决方案,但是如果它关闭了服务器之间的所有开放连接,并且在许多服务器保持打开状态时不阻止新的连接,那么我们最初的问题至少可以解决......但是我们需要先做一些测试在此之前可以放心。

回答

1

根据this,2.0框架中存在一个bug,SMTPClient没有配置并且没有发送QUIT,在第4版中已经修复。这可能是实施中还存在一个错误。 (我没有一个SMTP服务器来测试,我害怕。也许值得张贴这是在MS网站上的错误。

(链接发现谷歌搜索“smtpclient不释放套接字”)

干杯 -

+0

您好,感谢您的回答,我还阅读有关QUIT命令错误,但在日志中查找时,该退出的有效发送,只是答案似乎迷失在两个服务器之间。 正如你所建议的那样,我会尝试在MS buglist上发布它,看看它们是否能够解决这个问题。 – user3168628

+0

如果您为一家公司工作并获得批量许可协议,您可能会将一位MS客户经理分配给您的公司,而他的工作就是帮助解决某些问题。或者,如果您有MSDN订阅,您将拥有多个免费的MS支持电话。我使用这些设施的经验是,如果一切都失败了,它们可能会非常有用。 –