WCF: как регистрировать исключения? - PullRequest
1 голос
/ 06 марта 2010

Можно ли регистрировать исключения службы WCF? Я добавил в app.config. Но все же исключительное сообщение мыла отсутствует в файле журнала wcf. Все остальные сообщения, для которых нет исключений, можно увидеть в файле журнала WCF. Вот мой код и app.config. Любые указатели высоко ценятся.

public string GetName(int employeeId)
{
    string _fullName;

    try
    {
        switch (employeeId)
        {
            case 1:
                _fullName = "Dejan Dimitrovski";
                break;
            case 2:
                _fullName = "John Doe";
                break;
            case 3:
                _fullName = "Sue Marcus";
                break;
            case 4:
                throw new Exception("test exception");
            default:
                _fullName = "N/A";
                break;
        }
    }
    catch (Exception ex)
    {
        throw new FaultException(ex.Message, new FaultCode("Server"));   
    }
    return _fullName;
}

my app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <sources>
      <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>
      <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>
    </sources>
    <sharedListeners>
      <add initializeData="app_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0,&#xD;&#xA;          Culture=neutral, PublicKeyToken=b77a5c561934e089"
        name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
        <filter type="" />
      </add>
      <add initializeData="app_messages.svclog" 
        type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
        name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp" >
        <filter type="" />

      </add>
    </sharedListeners>
  </system.diagnostics>

  <system.serviceModel>
    <diagnostics>

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

    </diagnostics>
    <behaviors>
      <serviceBehaviors >
        <behavior name="EmployeeService"  >
          <serviceMetadata httpGetEnabled="true"   />
          <serviceDebug includeExceptionDetailInFaults="true"  />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings />
    <services>
      <service behaviorConfiguration="EmployeeService" name="SoftLab.Wcf.Service.EmployeeService">
        <endpoint name="basicHttpBinding"
                  address="basicEmployeeService"
                  binding="basicHttpBinding"
                  bindingNamespace="http://softlab.mkdot.net/binding/employee/2008/07"
                  contract="SoftLab.Wcf.Service.IEmployeeContract" />

        <endpoint name="mex"
                  address="mex"
                  binding="mexHttpBinding"
                  bindingConfiguration=""
                  contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
</configuration>

1 Ответ

2 голосов
/ 06 марта 2010

WCF регистрирует все необработанные исключения.Вы обработали исключение и вместо него вернули ошибку.

Попробуйте удалить блок try / catch.Я думаю, что ваш клиент заметит почти то же самое возвращение, и ваши исключения будут зарегистрированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...