2012-06-05 1 views
6

У нас есть служба WCF, которая работает отлично в течение нескольких месяцев. Как раз этим утром звонки на эту службу начали сбой при прокси-сервере, сообщающем «сброс соединения с помощью однорангового узла» (502). Как ни странно, для отложенных подключений нет записей журнала IIS, хотя мы можем обнаружить их с помощью WireShark. Так кажется, что поток умирает, не оставляя следа.Сброс соединения с помощью peer (502) при обращении к службе WCF в IIS 7.5

Проблемный веб-метод извлекал 100 записей базы данных. Мы обнаружили, что, ограничивая результаты до 20 записей, он работает так, как ожидалось. Я подозреваю, что в игру вступает тайм-аут, но без исключения или трассировки это очень трудно понять.

Кто-нибудь испытал это? Любые предложения по устранению неполадок?

ответ

16

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

Чтобы вы собираетесь быстро - в вашем веб-(или приложение) конфигурации:

1) Добавить system.diagnostics раздел в любом месте под элементом конфигурации. Вы можете заменить путь, по которому всегда хотите сохранить файлы.

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add name="ServiceModelMessageLoggingListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
     <source name="System.ServiceModel" switchValue="Warning, ActivityTracing" propagateActivity="true"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add name="ServiceModelTraceListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add initializeData="C:\temp\services_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack"> 
     <filter type="" /> 
     </add> 
     <add initializeData="C:\temp\services_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack"> 
     <filter type="" /> 
     </add> 
    </sharedListeners> 
    </system.diagnostics> 

2) Под system.serviceModel добавить следующее:

<diagnostics wmiProviderEnabled="false"> 
     <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" /> 
    </diagnostics> 

3) Под C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ начать SvcTraceViewer.exe , Загрузите трассировку сообщений (services_messages.svclog) и журнал трассировки службы (services_tracelog.svclog). Вы можете либо перетащить файлы папок в инструмент, либо открыть их, а затем добавить еще один

4) Ищите красные жирные буквы для проблемы.

Если вы хотите, чтобы ваше редактирование конфигурации WCF было более приемлемым, вы можете использовать SvcConfigEditor.exe, который находится в той же папке, что и SvcTraceViewer.exe (# 3). Просто откройте файл конфигурации, и вы увидите папку Diagnostics, которая позволит вам запускать/останавливать и настраивать диагностику.

+1

Спасибо! Наконец, я смог найти исключение в журнале трассировки, что привело к решению. –

+0

@nw. в чем была проблема? можете ли вы поделиться им? – Siddhesh

+0

Шаг 2) является необязательным и требует объявления раздела конфигурации сообщений. –

1

Что касается устранения неполадок, то WCF trace может иногда помочь решить эти проблемы.

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