合同类型未归属于ServiceContractAttribute

本文关键字:属于 ServiceContractAttribute 同类型 | 更新日期: 2023-09-27 18:03:00

当尝试创建一个使用动态端口而不是硬编码端口值的应用程序时,我遇到了这个错误:

系统。InvalidOperationException:合同类型MLITS.Pulse.Pulse没有使用ServiceContractAttribute属性。为了定义一个有效的契约,指定的类型(契约接口或服务类)必须使用ServiceContractAttribute属性。

我的代码有问题如下:

public static void DynamicAddress()
{
    int sessionIdentification = 0;
    int portNumber = 0;
    int newPort = 0;
    string uriString = string.Empty;
    sessionIdentification = Process.GetCurrentProcess().SessionId;
    portNumber = 14613;
    newPort = portNumber + sessionIdentification;
    uriString = "net.tcp://localhost:" + newPort + "/PulseService";
    Uri uri = new Uri(uriString);
    //ServiceHost objServiceHost = new ServiceHost(typeof(Pulse), uri);
    ServiceHost objServiceHost = new ServiceHost(typeof(Pulse));
    objServiceHost.Description.Endpoints.Clear();
    objServiceHost.AddServiceEndpoint(typeof(Pulse), new NetTcpBinding(), uri);
}

注释掉的部分是我之前的;然而,我意识到我需要清除配置文件中设置的端点;这就是后来的代码存在的原因,也是我遇到麻烦的地方。这里解释了配置文件的原因,在我发布的另一个问题中,以帮助解决我以前遇到的问题。一旦我找到了一个解决方案,我会把我的结果张贴在两个问题上,并关闭它们。

有没有人知道我做错了什么,知道如何修复我收到的错误?

合同类型未归属于ServiceContractAttribute

似乎你的ServiceContract属性不在你的具体类中,试试这个

ServiceHost objServiceHost = new ServiceHost(typeof(Pulse));
objServiceHost.Description.Endpoints.Clear();
objServiceHost.AddServiceEndpoint(typeof(IPulse), new NetTcpBinding(), uri);