gpt4 book ai didi

wcf - 使用多个合约运行 WCF ServiceHost

转载 作者:行者123 更新时间:2023-12-03 06:01:44 27 4
gpt4 key购买 nike

使用单个合约运行 ServiceHost 工作正常,如下所示:

servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.Open();

现在我想添加第二份(第三份、第四份……)契约(Contract)。我的第一个猜测是添加更多端点,如下所示:

servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.AddServiceEndpoint(typeof(IMyService2), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService2");
servicehost.Open();

但是这当然行不通,因为在创建 ServiceHost 时,我可以传递 MyService1 作为参数,也可以传递 MyService2 - 所以我可以向我的服务添加很多端点,但所有端点都必须使用相同的合约,因为我只能提供一种实现吗?
我感觉我没有捕获要点。当然,必须有某种方法来为我添加的每个端点合约提供实现,或者不是?

最佳答案

您需要在同一个类中实现这两个服务(接口(interface))。

servicehost = new ServiceHost(typeof(WcfEntryPoint));
servicehost.Open();

public class WcfEntryPoint : IMyService1, IMyService2
{
#region IMyService1
#endregion

#region IMyService2
#endregion
}
<小时/>

仅供引用:我经常使用部分类来使我的主机类代码更易于阅读:

// WcfEntryPoint.IMyService1.cs
public partial class WcfEntryPoint : IMyService1
{
// IMyService1 methods
}

// WcfEntryPoint.IMyService2.cs
public partial class WcfEntryPoint : IMyService2
{
// IMyService2 methods
}

关于wcf - 使用多个合约运行 WCF ServiceHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/334472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com