2011-01-04 22 views
5

Trong dịch vụ WCF, tôi có bộ ràng buộc điểm cuối là wsHttpBinding. Tuy nhiên khi tôi sử dụng Visual Studio để thêm dịch vụ tham khảo khách hàng của tôi app.config cho thấy ràng buộc như basicHttpBinding. Có ai biết tại sao điều này có thể xảy ra?wsHttpBinding các thay đổi đối với basicHttpBinding trong ứng dụng khách.config

Điểm cuối của tôi trong dịch vụ web.config (được lưu trữ trong IIS 7.5). Được giải quyết từ baseAddresses

<endpoint address="" 
    binding="wsHttpBinding" 
    bindingConfiguration="wsHttpServiceBinding" 
    contract="MyProject.IMyService" /> 

Khách hàng app.config:

<client> 
    <endpoint address="http://example.com/MyService.svc" 
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyService" 
    contract="Service.MyService" name="BasicHttpBinding_MyService" /> 
</client> 
+3

Có lẽ cấu hình của bạn không được sử dụng và khách hàng của bạn được xây dựng từ cấu hình mặc định. Kiểm tra tên đó trong phần tử dịch vụ của bạn giống với loại dịch vụ trong chỉ thị ServicHost (tệp .svc) bao gồm các không gian tên. Bạn cũng có thể xác minh điều này trong WSDL. –

+0

Tôi đã không đề cập đến điều này trong bài như đã cố gắng để giữ cho nó đơn giản nhưng tôi có hai bindings, khác là net.tcp mà đi qua mà không có bất kỳ vấn đề, do đó sự nhầm lẫn của tôi. – Cragly

Trả lời

7

- Ladislav Mrnka chỉ cho tôi đi đúng hướng với điều này. Cảm ơn rất nhiều.

Tôi đã cố gắng giữ cho câu hỏi đơn giản như tôi nghĩ câu trả lời có thể thẳng về phía trước. Tuy nhiên tôi nên giải thích thêm về chi tiết của tôi vì đây là câu trả lời cho vấn đề của tôi. Thay vì có hợp đồng dịch vụ của tôi (IMyService) cư trú trong ứng dụng dịch vụ WCF của tôi, tôi đã có nó trong một dự án miền khác, nơi tôi giữ tất cả các giao diện của mình để chúng có thể được sử dụng lại trong nhiều dự án khác nhau. Trong ứng dụng dịch vụ WCF của tôi .web.config Tôi đã có tên dịch vụ trỏ vào dự án giao diện hơn là tại triển khai thực hiện. Điều này gây ra VS2010 (svcutil.exe) để tạo một proxy và cấu hình dựa trên các thiết lập mặc định (tôi đoán là nằm trong machine.config (cho WCF 4)).

Vì vậy, để tóm tắt cho bất kỳ ai khác có thể gặp phải vấn đề này, đó là tên dịch vụ trỏ đến vị trí sai. Đảm bảo rằng tên dịch vụ trỏ đến việc thực hiện (thường là trong Ứng dụng Dịch vụ WCF - MyProject.MyService) và hợp đồng điểm cuối trỏ đến hợp đồng dịch vụ (Trong Ứng dụng Dịch vụ WCF hoặc dự án bên ngoài - MyProject.IMyService hoặc AnotherProject.Interfaces.IMyService).

Cảm ơn sự giúp đỡ của bạn.

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