Tôi đã tạo một dịch vụ WCF và hiển thị ba điểm cuối là basicHttpBinding, wsHttpBinding và webHttpBinding. Đây là một dịch vụ thử nghiệm cho các thí nghiệm của tôi với WCF. Nhưng, bất cứ khi nào tôi thêm tham chiếu dịch vụ bằng cách sử dụng tệp .svc, tôi chỉ nhận được hai điểm cuối (cơ bản và ws). Có vẻ như không phải là điểm cuối thứ ba (webHttpBidning) bị lộ vì một lý do nào đó.Hiển thị webHttpBinding điểm cuối trong dịch vụ WCF
Để tạo lại vấn đề này, tạo ra một dự án ứng dụng WCF, xóa các dịch vụ Service1, thêm mặt hàng mới> dịch vụ WCF tên TestService, và thay đổi tập tin cấu hình như sau:
<system.serviceModel>
<services>
<service name="WcfTestService.TestService" behaviorConfiguration="TestServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost/WcfTestService/TestService.svc"/>
</baseAddresses>
</host>
<endpoint address="basic"
binding="basicHttpBinding"
contract="WcfTestService.ITestService" />
<endpoint address="ws"
binding="wsHttpBinding"
contract="WcfTestService.ITestService" />
<endpoint address="web"
binding="webHttpBinding"
contract="WcfTestService.ITestService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="TestServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
đây là mã cho ITestService.cs:
[ServiceContract]
public interface ITestService
{
[OperationContract]
[WebInvoke]
Boolean ValidateUser(User user);
}
[DataContract]
public class User
{
[DataMember(Name = "Name")]
public String UserName { get; set; }
[DataMember]
public String Password { get; set; }
}
và cho TestService.svc
public class TestService : ITestService
{
public bool ValidateUser(User user)
{
if (user.UserName == "User" && user.Password == "123")
{
return true;
}
return false;
}
}
Tôi đã thử kết hợp khác nhau của tham số WebInvoke và tham số WebGet nhưng không thành công.
Bất cứ ai có thể cho tôi biết lý do tại sao điểm cuối thứ ba không hiển thị trong tệp WSDL?
Vì vậy, làm thế nào để khách hàng biết phương thức/loại nào được hiển thị khi chỉ có một điểm cuối sử dụng webHttpBinding? – decyclone
Tôi thực sự không biết (cách jQuery chuyển siêu dữ liệu). Có thể là một câu hỏi khác. –
@decyclone: Xem câu trả lời cho câu hỏi tiếp theo của bạn bên dưới. – BillVo