gpt4 book ai didi

c# - WCF 多个服务同一配置中的同一契约(Contract)

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:36 29 4
gpt4 key购买 nike

我正在尝试托管同一合约的不同服务实现:

Model

原因是需要一个虚拟实现来进行外部测试。

我试图在同一个 Windows 服务中托管两者:

    private ServiceHost _host;
private ServiceHost _dummy;
protected override void OnStart(string[] args)
{
_host = new ServiceHost(typeof(Service));
_host.Open();

//trying to avoid the app.config beeing used - because its already been hoste by _host
_dummy = new ServiceHost(typeof(TestDummyService));
_dummy.Description.Endpoints.Clear();
_dummy.AddServiceEndpoint(typeof(IService),
new WebHttpBinding(),
@"<link>/Dummy.svc/");
_dummy.ChannelDispatchers.Clear();
_dummy.Open();
}

这是配置文件:

  <system.serviceModel>
<services>
<service name="namespace.Service">
<host>
<baseAddresses>
<add baseAddress="<link>/Service.svc"/>
</baseAddresses>
</host>
<endpoint address=""
binding="webHttpBinding"
contract="namespace.IService"
behaviorConfiguration="web" />

<endpoint address="/mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors >
<behavior>
<serviceMetadata httpGetEnabled="true"
httpGetUrl="<link>/Service.svc/About" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name ="web">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>

位于/Service.svc/About 的 ChannelDispatcher 无法打开,并带有契约(Contract)“IHttpGetHelpPageAndMetadataContract”。

感谢任何帮助。

更新 1我的目标是在一个 WindowsService 中托管同一契约(Contract) (IService) 的 2 个不同实现。

我也想在配置文件中配置它们。

最佳答案

嗯,我想知道业务场景是什么。我的猜测是,客户端不应该知道实现,它只是服务的 URL 将指示(或路由)到实现。

请澄清。


引用这个现有的post然后让 我知道这是否有意义。


上面的帖子是暗示实现,引用这个post了解部署详情。

关于c# - WCF 多个服务同一配置中的同一契约(Contract),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14771686/

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