Tôi đã sau đây được trang trí trên dịch vụ của tôiWCF ExceptionShielding Lỗi ID không phù hợp với handlingInstanceId truyền cho Handler
<ExceptionShielding("MyExceptionPolicyName")>
khi một ngoại lệ lỗi được ném, chính sách của tôi nhặt lỗi và bản ghi trong tốt. Nó lấy id handlingInstance và ghi lại nó cùng với lỗi để tham khảo. Những gì tôi nhận thấy, là Guid quay trở lại trong lỗi "Lỗi ID:" là khác với một trong những thông qua vào instanceId xử lý.
Tôi cũng đã cố gắng để trang trí các hoạt động như vậy
<FaultContract(GetType(ValidationFault))>
nhưng điều này tạo ra kết quả tương tự.
Điều tôi muốn làm là một số cách chụp rằng "ID lỗi:" được trả lại cho người tiêu dùng để tôi có thể ghi lại cùng với ngoại lệ. * thông tin bổ sung: trình xử lý chính sách ngoại lệ là trình xử lý tùy chỉnh có ngoại lệ và ghi lại các thuộc tính và dữ liệu khác nhau của nó vào một lược đồ db đăng nhập ngoại lệ cụ thể.
Bất kỳ ai biết cách thực hiện điều này?
UPDATE: mỗi comment @ Jay Patel 's, tôi đã thêm này để cấu hình của tôi để cho phép truy tìm
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\Temp\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
sau đó tôi thực hiện một yêu cầu để có được một phản ứng lỗi che chắn bởi ngoại lệ che chắn. Chuỗi phản hồi lỗi được định dạng như vậy: "Đã xảy ra lỗi khi sử dụng dịch vụ này. Vui lòng liên hệ với quản trị viên của bạn để biết thêm thông tin. ID lỗi: {GUID}"
Sau đó tôi xem nhật ký theo dõi và không tìm thấy bằng chứng của GUID hoặc chuỗi này.
Đây là liên kết pastebin đến tracelog cho bất kỳ ai quan tâm để xem ví dụ về một khi sử dụng ExceptionShielding.
UPDATE2:
Một lần nữa, mỗi comment @ Jay Patel, bổ sung này. Tôi đã thử -1 và giá trị int tối đa cho maxMessageLog để đảm bảo tôi nhận được lượng dữ liệu lớn nhất trong nhật ký đó.
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="2147483647" />
</diagnostics>
Nhật ký không hữu ích. Nó bao gồm không có gì về mọi thứ thậm chí gần trả lời câu hỏi của tôi.
Để làm rõ trong trường hợp không rõ ràng ở trên ... Tôi muốn có thể nắm bắt GUID sau "ID lỗi:" trong thư gửi lại cho khách hàng để tôi có thể đăng nhập với ngoại lệ được ghi bởi trình xử lý ngoại lệ. Bằng cách này, khách hàng có thể liên hệ với "Quản trị viên" như thông báo nói với ID lỗi và thực sự có thể tìm thấy thứ gì đó.
Dưới đây là toàn bộ dấu vết kích hoạt pastbin
Vì vậy, tôi đã đặt một khoản tiền thưởng một lần vào tài khoản này. Nếu ai đó đi cùng với một câu trả lời tại một thời điểm nào đó, tôi sẽ làm những gì tôi có thể từ bỏ 50 điểm thưởng cho họ (tôi thậm chí không chắc liệu bạn có thể làm điều này không, nhưng nếu một câu trả lời đến và tôi thích nó, Tôi sẽ đăng một phần thưởng và thưởng cho người đó ... nếu đó không phải là không có ở đây trên ngăn xếp ... tốt ... Tôi sẽ cho bạn một cao ảo năm và nói cảm ơn bạn :) – wakurth
Không phải là nó sẽ giúp đỡ, nhưng có bạn cố gắng đăng nhập bằng cách sử dụng Tracing trong [WCF Tracing] (http://msdn.microsoft.com/en-us/library/ms733025.aspx) Bạn có thấy ID lỗi giống nhau ở đây không? –
Tôi không có. Tôi sẽ kiểm tra nó. Công ty tôi làm việc không có liên hệ tại MS, tôi đã gửi câu hỏi này đến và được thông báo rằng họ sẽ chuyển câu hỏi đó cho nhóm EntLib tại MS và trả lời tôi. Trong thời gian đó, tôi sẽ thử WCF Tracing và xem nó có giúp chỉ cho tôi hướng dẫn cách nắm bắt giá trị này ở phía máy chủ hay không. cảm ơn. – wakurth