Как получить исключение, которое привело к сбою действия Persist? - PullRequest
4 голосов
/ 25 февраля 2011

У меня есть стандартный рабочий процесс службы WCF с несколькими действиями Persist (все они созданы с помощью перетаскивания пользовательского интерфейса).Большинство сохраняемых действий завершаются успешно, но одно не выполняется.

Обертывание сбойного действия Persist в блок Try / Catch не помогает - оно просто переходит через catch и завершает рабочий процесс.я могу найти конкретную причину, почему упорство не удалось?Любое исключение регистрируется где-нибудь?

Я занимаюсь разработкой под Windows XP.

Ответы [ 3 ]

7 голосов
/ 21 мая 2012

Я регистрирую исключение в файле, добавляя прослушиватель в пространство имен System.Activities.DurableInstancing, вы сможете увидеть исключение там:

<system.diagnostics>
    <sources>
      <source name="System.Activities.DurableInstancing" switchValue="Verbose">
        <listeners>
          <add name="textListener" />
          <remove name="Default" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="textListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\Log\persistenceproblem.txt" traceOutputOptions="ProcessId, DateTime" />
    </sharedListeners>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="textListener" />
      </listeners>
    </trace>
  </system.diagnostics> 

Вот это объясняется в моем блоге http://pablocastilla.wordpress.com/2012/05/18/how-to-analyze-a-workflow-foundation-4-0-persistence-problem/

3 голосов
/ 28 февраля 2011

Чтобы получить конкретные сведения об основной ошибке, запустите рабочий процесс в режиме отладки (или присоедините его к w3wp.exe).В Visual Studio убедитесь, что параметр «Просто мой код» НЕ включен в «Отладка»> «Параметры и настройки», и убедитесь, что вы включили «Отладка»> «Исключения»> «Исключения общего времени выполнения».Тогда IDE выдаст вам ошибку при переходе.

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

2 голосов
/ 25 февраля 2011

Добавление ETWTracingParticipant должно помочь вам увидеть ошибку в журнале событий Windows.Проблема, часто возникающая из-за того, что ваш рабочий процесс не сериализуем.

...