c# - 调用简单服务失败并显示明显错误的错误消息

标签 c# wcf

当我调用此服务时,我收到此错误消息:

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/

相关文章:

c# - 存储库、工厂和层次结构数据

wcf - 如何在 Tridion 服务器上配置 Tridion 核心服务?

android - 在 Android 上使用 WCF 服务 - 主机名无效

WCF & MSMQ & TransactionScope 长流程

C# String.Format 参数

c# - 将动态创建的 lambda 应用于对象实例

c# - snk文件可以复制到其他文件夹吗?

c# - 抓取http请求并生成c#代码的工具

c# - 将类库公开为 WCF 服务

c# - 如何通过编码创建多个端点?