我有一個WCF服務,這是從我的Silverlight 3應用程序(使用C#)調用的。爲用戶填充列表框中的每個項目調用該服務。當只有一個項目包含在列表框中時,一切正常。多個項目導致錯誤有時。我測試了一下,有時候我有兩個項目出錯,有時候沒有。用4項測試,有一次我得到2個結果返回,之後出現錯誤。快速調用WCF服務時出錯
最糟糕的是,錯誤只是說「遠程服務器返回了一個錯誤:NotFound」。錯誤是「的CommunicationException」,並在EndMethod(System.IAsyncResult結果)拋出方法
這裏的電話:
foreach (ListBoxItem lbItem in categorySeeds)
{
Helper.Instance.service.ClusterAsync(Helper.Instance.language.value,
((KeyValuePair<string, int>)lbItem.Tag).Value,
Helper.Instance.clusterLevel,
Helper.Instance.clusterDelay,
Helper.Instance.clusterTolerance,
Helper.Instance.clusterMaxCategories,
Helper.Instance.similarity);
}
我記得通過調用「重用」我曾經「解決」問題包含我的WCF的AppPool的...所以也許配置有問題嗎?有誰知道我是否可以讓WCF返回比「NotFound」更有意義的錯誤信息?
由於提前, 弗蘭克
答:問題是由多重的WCF服務的調用的併發訪問造成的。服務調用StoredProcedures,它與同義詞 - 每個SP更改爲由參數給定的值的對象一起工作...所以我必須在那裏修復它。
描述必須是相當普遍的問題,想必解決方案是不反覆折騰節流?客戶端不會輕易地打開如此多的連接到同一臺服務器,它肯定會將這些請求排隊在客戶端上,並且只有少數併發請求未完成。另外,OP有時僅用兩個條目描述問題,所以我不能確定油門變化將如何幫助。我懷疑詳細的例外情況會揭示服務器端代碼沒有正確處理多個調用的併發。 – AnthonyWJones 2009-12-10 14:35:32
你是絕對正確的,安東尼。我已經有了serviceDebug屬性,但是當使用Silverlight 3使用WCF時,您必須更加努力才能真正獲得錯誤:http://msdn.microsoft.com/zh-cn/library/dd470096(VS .96).aspx - 得到這個之後,我發現這個錯誤是由WCF-Service在SQL-StoredProcedures中的併發訪問引起的。我使用同義詞來查詢具有相同結構的不同表格。但這是另一個故事...... *嘆* – Aaginor 2009-12-10 16:23:58