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