程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WCF客戶端無法訪問服務原因之二:連接數問題

WCF客戶端無法訪問服務原因之二:連接數問題

編輯:關於.NET

如果出現以下錯誤信息,極有可能是連接數過多,WCF配置文件默認為10個連接數,如果連接服務的客戶端超過10個後,將訪問不到服務.信息如下:

System.TimeoutException: 請求通道在等待 00:01:00 以後答復時超時。增加傳遞給請求調用的超時值,或者增加綁定上的 SendTimeout 值。分配給此操作的時間可能是更長超時的一部分。 ---> System.TimeoutException: 對“http://localhost:8731/WCFTest/Service1/”的 HTTP 請求已超過為 00:01:00 分配的超時。為此操作分配的時間可能是較長超時的一部分。 ---> System.Net.WebException: 操作超時

在 System.Net.HttpWebRequest.GetResponse()

在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)

--- 內部異常堆棧跟蹤的結尾 ---

在 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)

在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)

在 System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)

--- 內部異常堆棧跟蹤的結尾 ---

Server stack trace:

在 System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)

在 System.ServiceModel.Channels.ClientReliableChannelBinder`1.RequestClientReliableChannelBinder`1.OnRequest(TRequestChannel channel, Message message, TimeSpan timeout, MaskingMode maskingMode)

在 System.ServiceModel.Channels.ClientReliableChannelBinder`1.Request(Message message, TimeSpan timeout, MaskingMode maskingMode)

在 System.ServiceModel.Channels.ClientReliableChannelBinder`1.Request(Message message, TimeSpan timeout)

在 System.ServiceModel.Security.SecuritySessionClientSettings`1.SecurityRequestSessionChannel.Request(Message message, TimeSpan timeout)

在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)

在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)

在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)

在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)

在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:

在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

在 WCFClient.ServiceReference1.IService1.DoWork(String str)

在 WCFClient.ServiceReference1.Service1Client.DoWork(String str) 位置 F:\sss\WCFTest\WCFClient]\Service References\ServiceReference1\Reference.cs:行號 50

在 WCFClient.Program.Main(String[] args) 位置 F:\sss\WCFTest\WCFClient]\Program.cs:行號 19

解決方案:

1)首先保證客戶端每次建立的連接在使用完成後進行關閉.即調用Close()方法,否則此連接會在設置的會話(一般為10分鐘)後才自動關閉.期間任何客戶端也無法使用此服務.

2)如果默認的連接數不能滿足客戶端的需要,可以增加連接數.配置文件如下:

<serviceThrottling maxConcurrentCalls="20" maxConcurrentSessions="20" maxConcurrentInstances="30" />

說明:maxConcurrentCalls :最大並發數,默認為16

maxConcurrentSessions :最大的會話數,主要針對於PerSession的情況,默認為10

maxConcurrentInstances:最大實例數,默認為26

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved