Отслеживание WCF из кода - PullRequest
7 голосов
/ 18 декабря 2009

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

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

РЕДАКТИРОВАТЬ: Чтобы добавить немного больше информации:

Приложение является консольным приложением C #, и моя привязка объявлена ​​как:

private Binding getBinding()
{
    NetTcpBinding tcp = new NetTcpBinding();
    tcp.ReaderQuotas.MaxArrayLength = 65535;
    tcp.TransferMode = TransferMode.Streamed;
    tcp.ReaderQuotas.MaxArrayLength = int.MaxValue;
    tcp.ReaderQuotas.MaxDepth = int.MaxValue;
    tcp.ReaderQuotas.MaxStringContentLength = int.MaxValue;
    tcp.ReaderQuotas.MaxBytesPerRead = int.MaxValue;
    tcp.ReaderQuotas.MaxNameTableCharCount = int.MaxValue;
    tcp.MaxReceivedMessageSize = int.MaxValue;
    return tcp;
}

И затем я добавляю сервисы в свое приложение, используя универсальную функцию:

private List<ServiceHost> m_Hosts = new List<ServiceHost>();
private static List<string> m_Services = new List<string>();

public void AddHost<T1, T2>(string uri)
    where T1 : class
    where T2 : class
{
    m_Services.Add("net.tcp://<ipaddress>:<port>/" + uri);
    m_Hosts.Add(new ServiceHost(typeof(T1)));
    m_Hosts[m_Hosts.Count - 1].AddServiceEndpoint(typeof(T2), getBinding(), m_Services[m_Services.Count - 1]);
}

Очевидно, что немного больше кода, чтобы все это работало, но это должно дать любые соответствующие части.

Ответы [ 2 ]

5 голосов
/ 18 декабря 2009

Ниже приведен пример .config для включения трассировки, если вы хотите сделать еще одну попытку. Убедитесь, что файл .config находится в той же папке на вашем хосте службы WCF.

<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true" >
        <listeners>
          <add name="xml"/>
        </listeners>
      </source>

      <source name="myUserTraceSource" switchValue="Warning, ActivityTracing">
        <listeners>
          <add name="xml"/>
        </listeners>
      </source>
    </sources>

    <sharedListeners>
      <add name="xml" 
           type="System.Diagnostics.XmlWriterTraceListener" 
           initializeData="TraceLog.svclog" />
    </sharedListeners>

  </system.diagnostics>
</configuration>

Microsoft предоставляет Service Trace Viewer Tool для чтения файлов .svclog.

Убедитесь, что путь, по которому вы будете сохранять .svclog, имеет необходимые разрешения на запись.

0 голосов
/ 21 сентября 2010

Просто для записей вот как изменить имя файла журнала на код

http://geekswithblogs.net/FlippinIT/archive/2009/11/12/wcf-tracing-in-code.aspx

...