2013-12-22 2 views
0

Недавно я заметил в нашей производственной среде, что исключения записываются в журнал, что службы WCF синхронизируются между вызовами от моего внешнего сервера до логического сервера ib. Оба используют WCF для связи. Внешний сервер регистрирует следующее исключение:Выключение или закрытие службы WCF?

Это происходит с перерывами. В чем причина этого? Связано ли это с сетью?

Timestamp: 23/12/2013 07:59:00.507895 
Message: HandlingInstanceID: 58495715-f5d8-49a9-9c90-763a1718228b 
An exception of type 'System.ServiceModel.CommunicationException' occurred and was caught. 
------------------------------------------------------------------------------------------ 
12/23/2013 07:59:00 
Type : System.ServiceModel.CommunicationException, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
Message : An error occurred while receiving the HTTP response to https://myservername:2083/IBServer/PayeesService.svc. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details. 
Source : Facade 
Help link : 
Data : System.Collections.ListDictionaryInternal 
TargetSite : System.Collections.Generic.List`1[Facade.BusinessObjects.Payee] GetPayeeList() 
Stack Trace : 
Server stack trace: 
    at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason) 
    at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 
    at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) 
    at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

Exception rethrown at [0]: 
    at IB.Facade.PayeeFacade.GetPayeeList() in Facade.Payees.cs:line 236 
    at LoginBase.RetrievePayees() 
    at LoginBase.LoadPayees() 
    at Login.LoadDefaultCache() 

FRONTEND WCF ОБЯЗАТЕЛЬНОЕ для службы WCF на Transaction Server:

<binding name="WSHttpBinding_ManagePayeeService" closeTimeout="00:02:00" openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:02:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> 

      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 

      <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> 

      <security mode="Transport"> 

       <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 

       <message clientCredentialType="UserName" algorithmSuite="Default" /> 

      </security> 

     </binding> 

WCF Binding на Transaction Server:

<binding name="WSHttpBinding_ManagePayeeService" closeTimeout="00:02:00" openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:02:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> 
     <security mode="Transport"> 
     <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
     <message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="true" /> 
     </security> 
    </binding> 
+0

попробовать поворот на ФОС диагностики на стороне сервера – GSerjo

ответ

0

Взгляните на MaxRequestLength и readerQuotas, выглядит иногда по умолчанию настройки недостаточно

+0

Это не переплеты, они настроены использовать максимальный размер: – FaNIX

+0

FaNIX

+0

Не могли бы вы разместить полный wcf confg – GSerjo

2

Вы пробовали смотреть в svclogs для g более подробную информацию о том, что происходит не так?

Этот журнал можно настроить в вашем Web.config под элементом system.diagnostics. Ниже взято из одного из моих тестовых файлов, которые я иногда использую.

Примечание: не оставляйте этот журнал в любое время на производственной площадке, так как журналы быстро вырастут до проблемного размера. По этой причине, всякий раз, когда я помещаю секцию ниже в игру, я прокомментирую ее как можно скорее.

При включении такого ведения журнала он лучше всего работает, если вы захватываете как клиентский, так и серверный журналы. Часто журнал сервера будет иметь информацию, которая не передается клиенту, и наоборот.

<system.diagnostics> 
    <!-- 
    Trace Levels: 
     Off, Critical, Error, Warning, Information, Verbose, ActivityTracing, All 
    --> 
    <!--<trace autoflush="true" />--> 
    <sources> 
    <source name="System.ServiceModel" switchValue="All" propagateActivity="true"> 
     <listeners> 
     <add name="System.ServiceModel" type="System.Diagnostics.XmlWriterTraceListener" initializeData ="C:\Logs\MyWebsiteLogs\SVC\System.ServiceModel.svclog" /> 
     </listeners> 
    </source> 
    <source name="System.ServiceModel.MessageLogging" switchValue="All"> 
     <listeners> 
     <add name="System.ServiceModel.MessageLogging" type="System.Diagnostics.XmlWriterTraceListener" initializeData ="C:\Logs\MyWebsiteLogs\SVC\WCF\System.ServiceModel.MessageLogging.svclog" /> 
     </listeners> 
    </source> 
    <source name="System.ServiceModel.IdentityModel" switchValue="All"> 
     <listeners> 
     <add name="System.ServiceModel.IdentityModel" type="System.Diagnostics.XmlWriterTraceListener" initializeData ="C:\Logs\MyWebsiteLogs\SVC\WCF\System.ServiceModel.IdentityModel.svclog" /> 
     </listeners> 
    </source> 
    <source name="System.ServiceModel.Activation" switchValue="All"> 
     <listeners> 
     <add name="System.ServiceModel.Activation" type="System.Diagnostics.XmlWriterTraceListener" initializeData ="C:\Logs\MyWebsiteLogs\SVC\WCF\System.ServiceModel.Activation.svclog" /> 
     </listeners> 
    </source> 
    <source name="System.ServiceModel.Serialization" switchValue="All"> 
     <listeners> 
     <add name="System.ServiceModel.Serialization" type="System.Diagnostics.XmlWriterTraceListener" initializeData ="C:\Logs\MyWebsiteLogs\SVC\WCF\System.ServiceModel.Serialization.svclog" /> 
     </listeners> 
    </source> 
    <source name="System.IO.Log" switchValue="All"> 
     <listeners> 
     <add name="System.IO.Log" type="System.Diagnostics.XmlWriterTraceListener" initializeData ="C:\Logs\MyWebsiteLogs\SVC\WCF\System.IO.Log.svclog" /> 
     </listeners> 
    </source> 
    <source name="Cardspace" switchValue="All"> 
     <listeners> 
     <add name="Cardspace" type="System.Diagnostics.XmlWriterTraceListener" initializeData ="C:\Logs\MyWebsiteLogs\SVC\WCF\Cardspace.svclog" /> 
     </listeners> 
    </source> 
    </sources> 
</system.diagnostics> 

Вы можете просмотреть журналы, используя Service Trace Viewer Tool. Этот инструмент может или не может быть установлен вместе с текущей версией Visual Studio/.NET Framework.

EDIT: Для связи я считаю, что каждый раз, когда я получаю исключение связи, как это в WCF он всегда оказывается ошибка сериализации какого-то на сервере. Это только в моем опыте, однако, не уверен, что другие сценарии могут генерировать ошибку, подобную этой.

+0

Я отдам это. благодаря – FaNIX

1

Обычно я получаю это, когда исключение не обрабатывается. Что-нибудь появляется в журналах событий? Вы используете IIS или самостоятельный хостинг?

Смежные вопросы