2009-12-18 23 views
7

Tôi có tất cả các kết nối được thiết lập từ mã của tôi, thay vì sử dụng tệp cấu hình của tôi. Làm thế nào để đi về thiết lập WCF Tracing trên một kết nối được xây dựng từ mã. Tôi đã thử thêm truy tìm vào tệp cấu hình, như được giải thích here, nhưng nó không tạo ra bất kỳ nhật ký nào.Truy tìm WCF từ Mã số

Tôi cần biết cách làm cho tệp hoạt động từ tệp cấu hình cho các kết nối được thiết lập trong mã hoặc cách định cấu hình mã theo cách thủ công trong mã nếu có bất kỳ thông tin nào. Cảm ơn!

EDIT: Để thêm một ít thông tin:

Ứng dụng này là một ứng dụng C# Console, và ràng buộc của tôi được khai báo là:

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

Và sau đó tôi thêm dịch vụ vào ứng dụng của tôi bằng cách sử dụng chung chức năng:

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

Rõ ràng là có thêm một chút mã để làm cho tất cả hoạt động, nhưng điều này sẽ cung cấp cho bất kỳ phần nào có liên quan.

Trả lời

5

Sau đây là ví dụ .config để bật theo dõi, nếu bạn muốn thử lại lần nữa. Đảm bảo tệp .config nằm trong cùng thư mục của máy chủ lưu trữ WCF của bạn.

<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 cung cấp Service Trace Viewer Tool để đọc tệp .svclog.

Đảm bảo đường dẫn nơi bạn sẽ lưu .svclog có các quyền ghi cần thiết.

+1

Bạn sẽ muốn chắc chắn rằng 'initializeData = 'thuộc tính có tên của một tập tin trong một thư mục vị trí có thể ghi bởi dịch vụ của bạn. Nếu không thì không có gì được viết. –

+0

Không có gì ... Nó không ném bất kỳ ngoại lệ hay bất cứ điều gì, nhưng nó cũng không tạo ra một tệp nhật ký. –

+0

@ md5sum: Bạn có thể kiểm tra tệp 'app.config' đang được ứng dụng máy chủ đọc không? Ví dụ: hãy thử thêm '' vào 'app.config' của bạn và thử đọc nó bằng' System.Configuration.ConfigurationSettings.AppSettings ["TEST_KEY "]' từ ứng dụng máy chủ của bạn. –

Các vấn đề liên quan