2009-12-18 3 views
7

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

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

EDIT: Для того, чтобы добавить немного больше информации:

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

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]); 
} 

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

ответ

5

Следующий пример: .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> 

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

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

+1

Вы хотите, чтобы удостовериться, что initializeData = '' атрибут имеет имя файла в папке местоположение, доступное для вашей службы. В противном случае ничего не написано. –

+0

Ничего ... Он не бросает никаких исключений или чего-либо еще, но он также не создает файл журнала. –

+0

@ md5sum: Можете ли вы проверить, что ваш файл 'app.config' читается хост-приложением? Например, попробуйте добавить '' в свой 'app.config' и попытаться прочитать его с помощью' System.Configuration.ConfigurationSettings.AppSettings ["TEST_KEY "]' из вашего хост-приложения. –