当我调用此服务时,我收到此错误消息:
ContractDescription has zero operations; a contract must have at least one operation
这没有任何意义,因为我的接口(interface)函数定义了 [OperationContract()]
属性。
界面:
[ServiceContract()]
public interface ITest
{
[OperationContract()]
bool Connect(string password);
}
SVC:
<%@ ServiceHost Language="CS" Debug="true" Service="TestService.Test" CodeBehind="Test.svc.cs" %>
svc.cs:
public class Test : ITest
{
public bool Connect(string password)
{
return true;
}
}
调用: 配置是通过编程方式定义的,因为它是一个库
public sealed class Validator
{
public static bool Connect(string password)
{
return ObtenirCLient().Connect(password);
}
private static LicensingService.LLMrqLicensingClient ObtenirCLient()
{
dynamic endpoint = new EndpointAddress("http://localhost/TestService/Test.svc");
LicensingService.LLMrqLicensingClient client = new LicensingService.LLMrqLicensingClient(ObtenirBinding(), endpoint);
client.Endpoint.Name = "LicHttp";
client.Endpoint.Contract = new Description.ContractDescription("TestService.ITest");
return client;
}
private static BasicHttpBinding ObtenirBinding()
{
return new BasicHttpBinding {
Name = "LicHttp",
Security = ObtenirSecurity()
};
}
private static BasicHttpSecurity ObtenirSecurity()
{
return new BasicHttpSecurity {
Mode = BasicHttpSecurityMode.TransportCredentialOnly,
Transport = ObtenirTransport()
};
}
private static HttpTransportSecurity ObtenirTransport()
{
return new HttpTransportSecurity { ClientCredentialType = HttpClientCredentialType.Windows };
}
}
如果您发现任何奇怪的情况,请告诉我!
最佳答案
而不是
client.Endpoint.Contract = new Description.ContractDescription("TestService.ITest");
试试这个:
client.Endpoint.Contract = ContractDescription.GetContract(typeof(ITest));
关于c# - 调用简单服务失败并显示明显错误的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30672826/