2009-01-21 71 views
1

我正在加載測試我的網站。該站點使用clientCredentialType =「Windows」調用在同一個框上運行的WCF服務。一切正常,直到我達到一定的載荷(這甚至不是很高),然後我得到了以下錯誤:WCF加載失敗 - MessageSecurityException

System.ServiceModel.Security.MessageSecurityException: The HTTP request was forbidden with client authentication scheme 'Anonymous'. ----> System.Net.WebException: The remote server returned an error: (403) Forbidden.

在每次調用創建一個通道:

var proxy = (IClientChannel)channelFactory.CreateChannel(); 

成功時,我收盤:

proxy.Close(); 

上的錯誤,我放棄:

proxy.Abort(); 

任何想法發生了什麼?我能做些什麼來更好地處理負載?要找什麼?

回答

0

問題是,我正在我的開發盒上運行測試,這是XP,它使用IIS 5,它有10個連接的限制。

1

您的服務是一個會話服務還是您不擔心保持呼叫之間的狀態?如果您沒有州,您可能需要將您的服務標記爲PerCall服務。這將確保服務實例僅在客戶端調用正在進行時才存在。

Juval Lowy的優秀着作「編程WCF服務」第2版的第4章介紹了這一主題。

默認是PerSession,它可能不是你想要的。

而且,看到這個MSDN上:如何:Control Service Instancing

0

感謝特里。我的服務不保持狀態。我嘗試裝飾我的服務類:

[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)] 

沒有幫助。失敗點似乎在大約4個併發呼叫。

+0

WCF服務正在做什麼樣的工作?你可以嘗試的另一件事是嘲笑你的服務。使用相同的接口,但實際的服務代碼無效。看看你是否有類似的問題。如果沒有,在服務中放置一些Thread.Sleep來模擬正在發生的事情。 – 2009-01-22 19:44:58