2012-06-05 32 views
6

Chúng tôi có dịch vụ WCF hoạt động tốt trong nhiều tháng. Chỉ cần sáng nay, các cuộc gọi đến dịch vụ này đã bắt đầu thất bại với máy chủ proxy báo cáo "kết nối thiết lập lại bởi peer" (502). Oddly đủ không có mục đăng nhập IIS cho các kết nối bị bỏ, mặc dù chúng tôi có thể phát hiện chúng với WireShark. Vì vậy, nó có vẻ như là nếu sợi đang chết, không để lại dấu vết phía sau.Thiết lập lại kết nối ngang hàng (502) khi liên hệ với dịch vụ WCF trong IIS 7.5

Phương pháp web có vấn đề đã truy xuất 100 bản ghi cơ sở dữ liệu. Chúng tôi thấy rằng bằng cách giới hạn kết quả thành 20 bản ghi, nó hoạt động như mong đợi. Tôi nghi ngờ có một thời gian chờ đến chơi, nhưng không có ngoại lệ hoặc traceback nó rất khó để biết.

Có ai đã trải nghiệm điều này không? Bất kỳ đề xuất nào về cách khắc phục sự cố?

Trả lời

16

Bạn có thể bật chẩn đoán WCF trên dịch vụ của mình để biết thêm chi tiết về ngoại lệ.

Để giúp bạn đi một cách nhanh chóng - trong web của bạn (hoặc ứng dụng) cấu hình:

1) Thêm phần System.Diagnostics bất cứ nơi nào trong thành phần cấu hình. Bạn có thể thay thế đường dẫn với đường dẫn bạn muốn lưu trữ.

<system.diagnostics> 
    <sources> 
     <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> 
     <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> 
    </sources> 
    <sharedListeners> 
     <add initializeData="C:\temp\services_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack"> 
     <filter type="" /> 
     </add> 
     <add initializeData="C:\temp\services_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack"> 
     <filter type="" /> 
     </add> 
    </sharedListeners> 
    </system.diagnostics> 

2) Theo System.ServiceModel thêm sau:

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

3) Dưới C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ bắt đầu SvcTraceViewer.exe . Tải cả dấu vết thư (services_messages.svclog) và nhật ký dò vết dịch vụ (services_tracelog.svclog). Bạn có thể kéo các tệp thả trong công cụ hoặc mở một tệp rồi thêm một số khác

4) Tìm chữ in đậm màu đỏ để tìm sự cố.

Nếu bạn muốn làm cho trải nghiệm chỉnh sửa cấu hình WCF dễ chịu hơn, bạn có thể sử dụng SvcConfigEditor.exe được tìm thấy trong cùng thư mục với SvcTraceViewer.exe (# 3). Chỉ cần mở tệp cấu hình và bạn sẽ thấy thư mục Chẩn đoán sẽ cho phép bạn bắt đầu/dừng và định cấu hình chẩn đoán.

+1

Cảm ơn bạn! Cuối cùng tôi đã có thể tìm thấy một ngoại lệ trong nhật ký theo dõi, dẫn đến giải pháp. –

+0

@nw. có vấn đề gì thế? bạn có thể chia sẻ nó không? – Siddhesh

+0

Bước 2) là tùy chọn và yêu cầu khai báo phần cấu hình MessageLogging. –

1

Để khắc phục sự cố, đôi khi, WCF trace đôi khi có thể giúp tìm ra các vấn đề này.

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