2013-03-07 72 views
2

我有一個WCF服務託管在IIS(IIS 8)中。該服務處於每個呼叫模式,併發模式設置爲多個。我有大約600個客戶端連接到它。它有一個HTTPS終點。它也有一個net.tcp端點,但沒有使用。並非所有客戶都面臨一個非常奇怪的問題。客戶在使用一段時間後停止工作。我有錯誤日誌記錄,在客戶端我看到錯誤說間歇性WCF連接(沒有端點..)錯誤

There was no end point listening at ... 

服務器或服務沒有錯誤。該服務似乎工作正常。我可以從瀏覽器瀏覽到服務頁面,其他客戶端仍然可以使用該服務。運行蹤跡也無濟於事。我花了足夠的時間試圖弄清楚,但沒有運氣。此外,在同一臺計算機上,重新啓動客戶端似乎可以工作並連接到相同的服務。客戶端是一個WinForms應用程序。 我在我的機器上執行了DNS刷新,甚至沒有幫助。

可能的問題是什麼?我想到的事情是,客戶可能無法解決這個名字,但這首先與它連接是矛盾的。 該服務可能停機,但我的其他客戶仍然使用相同的服務,而且他們不會遇到問題。 這可能是客戶機的問題,因爲它使用Win XP,但我不確定是否會導致問題。 或者它可能是一個問題,因爲間歇性的互聯網連接。

有沒有人曾經遇到過這樣的問題?有些見解將會非常有用

回答

3

IIS一次只能提供有限數量的客戶端。然後它會將其他請求放入隊列中。那個隊列也是有限的。當該隊列填滿時,IIS將返回一個500錯誤,該錯誤被解釋爲「沒有終點在... ...」

您應該嘗試這段代碼。

public void Main() 
{ 
    while(thereIsStillThisProblem) 
    { 
     var pc = new Pc(); 
     pc.OS = new Windows2012(); 
     pc.Start(); 
     pc.Software.Add(new ServiceHost()); 
    } 
} 

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/iis/64e30660-d2f0-4e90-98cc-1652214a2b93.mspx

編輯:只記得有一個你可以做,如果你使用的是.NET 4.5件事。我會讓Jon Skeet explain.

+0

你肯定不需要pc.OS和pc.Start之前的var? :) +1的機智,但有用的迴應 – NDJ 2013-03-07 15:16:38

+2

@NDJ固定,也讓我們面對它。現在大多數人使用工廠模式創建個人電腦。 – Aron 2013-03-07 15:23:44