2014-01-07 189 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支持電話。我使用這些設施的經驗是,如果一切都失敗了,它們可能會非常有用。 –