Вопрос по wcf, asp.net – Сброс соединения одноранговым узлом (502) при обращении к службе WCF в IIS 7.5

7

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

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

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

Ваш Ответ

2   ответа
19

чтобы получить более подробную информацию об исключениях.

Чтобы быстро приступить к работе - в настройках веб-приложения (или приложения):

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). Просто откройте файл конфигурации, и вы увидите папку «Диагностика», которая позволит вам запускать / останавливать и настраивать диагностику.

@nw. в чем была проблема? ты можешь поделиться этим?
Спасибо! Наконец я смог найти исключение в журнале трассировки, что привело к решению. nw.
Блестящий инструмент, так рад, что наткнулся на этот пост
Шаг 2) является необязательным и требует объявления раздела конфигурации messageLogging.
Что бы это ни стоило, это был единственный способ решить мою проблему. Все другие предложения (в дюжине постов) подтолкнули меня к указаниям "что, если это" ... " конкретные предложения. Этот уровень отладки заставил меня ответить. Для меня это был метод WCF, возвращающий DataTable, а XmlSerializer требовал установки TableName. Никакого внешнего исключения не выброшено! Но я получил это во время следа.
1

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

Похожие вопросы