2011-02-08 36 views
13

Tôi có dịch vụ wcf sẽ hiển thị dịch vụ bằng hai điểm cuối. Một điểm cuối được sử dụng cho các cuộc gọi dịch vụ web trong khi người kia đang sử dụng phần còn lại.Xác định điểm cuối wcf nào đang được sử dụng trên máy chủ

Có cách nào để xác định điểm cuối của các chức năng máy chủ đang được gọi không?

+0

một vấn đề im gặp phải là xà phòng và phần còn lại xử lý erros khác nhau. Để báo cáo một lỗi trong phần còn lại, bạn cần gửi một yêu cầu xấu như là một phản ứng, và điều này gây ra một ngoại lệ unhanded trong xà phòng. – Marcom

Trả lời

15

Thực tế, trái ngược với những gì tôi nghĩ - thực sự khá dễ dàng để tìm ra điểm cuối dịch vụ được gọi. Trong phương pháp dịch vụ của bạn, thêm những dòng mã:

OperationContext oc = OperationContext.Current; 

if(oc != null) 
{ 
    string wasCalledOn = oc.EndpointDispatcher.EndpointAddress.Uri.ToString(); 
} 

Nhưng như tôi đã nói: Tôi sẽ sử dụng này rất khôn ngoan và "phòng thủ" - không bắt đầu thay đổi hành vi dịch vụ dựa trên những gì Endpoint phương pháp của bạn đã được kêu gọi - đó sẽ là thiết kế rất tệ!

Tôi đã thử điều này với một số điểm cuối SOAP - không chắc chắn cách REST sẽ được xử lý (nhưng rất có thể giống nhau hoặc rất giống nhau) - hãy dùng thử!

Nhưng để đăng nhập, điều này sẽ chỉ hoạt động tốt!

+0

Thay vì '.ToString()' Tôi đã sử dụng '.Segments.Last()'. – ricksmt

1

Lifted từ blog entry here:

Bạn chỉ cần nhìn vào LocalAddress trên kênh của bối cảnh Operation hiện trong phương pháp :

OperationContext.Current.Channel.LocalAddress 
Các vấn đề liên quan