Я создал службу WCF и выставил три конечные точки, такие как basicHttpBinding, wsHttpBinding и webHttpBinding.Это тестовый сервис для моих экспериментов с WCF.Но всякий раз, когда я добавляю ссылку на службу, используя файл .svc, я получаю только две (базовая и ws) конечные точки.Похоже, по какой-то причине не существует третьей конечной точки (webHttpBidning).
Чтобы воспроизвести эту проблему, создайте проект приложения WCF, удалите службу Service1, добавьте новый элемент> службу WCF с именем TestService,и измените файл конфигурации следующим образом:
<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>
Вот код для 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; }
}
и для TestService.svc
public class TestService : ITestService
{
public bool ValidateUser(User user)
{
if (user.UserName == "User" && user.Password == "123")
{
return true;
}
return false;
}
}
Я пробовал разные комбинации параметров WebInvoke и параметров WebGet, но не смог.
Может кто-нибудь сказать мне, почему третья конечная точка не отображается в файле WSDL?