2013-12-18 3 views
2

Мне очень тяжело работать с моим приложением. Это простое приложение, использующее шаблон MVC & ET, а также проект WCF.Как отладить WCF

Когда я запускаю «собственное» консольное приложение, оно работает как шарм, однако, когда я запускаю его через WCF, что-то идет не так, и я получаю System.Collections.Generic.KeyNotFoundException, поэтому я хочу посмотреть, откуда это происходит. Console.WriteLine() не работает, поэтому я ищу другие способы печати того, что происходит при работе WCF.

Дело в том, что WCF работает точно, простые методы, так как listCustomers() возвращаются без проблем, но самый сложный, FindPathFromAtoB() не работает по какой-либо причине. Однако без WCF он работает без проблем.

+0

Любая причина, по которой вы не можете запустить ее локально и следовать ей через отладчик? – Jason

+0

Если это действительно простое приложение, переключитесь на ASP.NET Web API, и вы можете легко его отладить. Веб-API сам по себе является открытым исходным кодом, а отладка намного проще, чем WCF. –

+0

@LexLi Я не могу, это для моего университетского проекта. Мы должны использовать WCF. – Nikola

ответ

1

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

В конфигурационном файле службы добавьте следующий раздел. Это создаст 2 слушателя. В настоящее время они настроены для регистрации только ошибок, но вы можете изменить значение switchValue, чтобы регистрировать больше.

Вам также необходимо изменить путь, в котором будут созданы журналы (initializeData). Рабочий процесс службы должен иметь доступ на запись к этому пути.

<system.diagnostics> 
    <!--set autoflush to false to increase performance --> 
    <trace autoflush="true"/> 
    <sources> 
     <!-- message logging --> 
     <source name="System.ServiceModel.MessageLogging" logKnownPii="false" switchValue="Error"> 
      <listeners> 
       <add name="ServiceModelMessageLoggingListener"> 
        <filter type=""/> 
       </add> 
      </listeners> 
     </source> 
     <!--service model tracing--> 
     <source name="System.ServiceModel" switchValue="Error" propagateActivity="true"> 
      <listeners> 
       <add name="ServiceModelTraceListener"/> 
      </listeners> 
     </source> 
    </sources> 
    <!-- worker process account needs write access to the configured tracing directories --> 
    <sharedListeners> 
     <add name="ServiceModelMessageLoggingListener" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\messages.svclog" traceOutputOptions="Timestamp"> 
      <filter type=""/> 
     </add> 
     <add name="ServiceModelTraceListener" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\trace.svclog" traceOutputOptions="Timestamp"> 
      <filter type=""/> 
     </add> 
    </sharedListeners> 
</system.diagnostics> 

Дополнительная информация о: MSDN.

1

Ответ на шимон не завершен. Журналы WCF могут быть чрезвычайно подробными и труднодоступны для начинающего разработчика WCF. Существует инструмент, называемый Service Trace Viewer, который вам нужно использовать для интерпретации журналов из вашей службы.

Вот хорошая ссылка ...

http://msdn.microsoft.com/en-us/library/aa751795(v=vs.110).aspx

Кроме того, если ваш клиент клиент WCF, вы, вероятно, хотите протоколирования установки на клиенте и сервере, вы можете загрузить журналы для как клиент, так и сервер в Service Trace Viewer и посмотреть весь разговор.

+0

Да, вы правы. Я забыл об этом. – Szymon

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