1

首先介绍一下背景:

我有一个 Web 服务器,它运行相同 ASP .NET 应用程序的 4 个实例,每个实例都在不同的文化中(在 web.config 中设置)。这些文化是英国人 (GBR)、澳大利亚人 (AUS)、爱尔兰人 (IRL) 和新西兰人 (NZL)。他们每个人都有一个网络方法“DoWork”,我想通过一个计划任务调用它。我有一个简单的 exe,它在四种文化中的每一种上调用此方法,简化代码:

Dim AUSclient As New AUSAutomated.AUSAutomatedClient()
AUSclient.DoWork
Dim GBRclient As New GBRAutomated.GBRAutomatedClient()
GBRclient.DoWork
Dim IRLclient As New IRLAutomated.IRLAutomatedClient()
IRLclient.DoWork
Dim NZLclient As New NZLAutomated.NZLAutomatedClient()
NZLclient.DoWork

在使用方法的任务中,app.config 如下所示:

        <endpoint address="net.pipe://localhost/Services/GBR/GBRAutomated.svc"
            binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IGBRAutomated"
            contract="GBRAutomated.IGBRAutomated" name="NetNamedPipeBinding_IGBRAutomated">
                </endpoint>

        <endpoint address="net.pipe://localhost/Services/IRL/IRLAutomated.svc"
 binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IIRLAutomated"
 contract="IRLAutomated.IIRLAutomated" name="NetNamedPipeBinding_IIRLAutomated">
                    </endpoint>

        <endpoint address="net.pipe://localhost/Services/NZL/NZLAutomated.svc"
            binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_INZLAutomated"
            contract="NZLAutomated.INZLAutomated" name="NetNamedPipeBinding_INZLAutomated">
                    </endpoint>

应用程序使用网络命名管道绑定通过 WCF 公开 Web 方法。每种文化在 web.config 中都有一个条目以指向正确的服务。例如爱尔兰是:

<service name="Web.IRLAutomated">
            <endpoint address="net.pipe://localhost/Services/IRL/IRLAutomated.svc" binding="netNamedPipeBinding" contract="Web.IIRLAutomated" />
        </service>

因此,每种文化的公开方法都有不同的合同和地址。

当任务运行时,它会调用澳大利亚方法 4 次。它似乎忽略了 web.configs 中的设置,并在第一个应用程序上使用正确的合同调用该方法。所以我的问题是:

如何为每种文化中的方法设置唯一的管道名称?

我尝试在绑定上设置 hostNameComparisonMode="Exact" 但这似乎没有任何区别。

4

1 回答 1

0

你不能

经过一番搜索,我在这里发现了一个关于 StackOverflow 的类似问题:

在 IIS 中托管 WCF net.pipe 绑定时控制命名管道的名称

由于 2 年内没有人回答上述问题,我假设我想要做的事情是不可能的。

如果其他人正在努力解决此类问题,我发现此博客条目对帮助我理解非常有帮助:

http://blogs.charteris.com/blogs/chrisdi/archive/2008/05/19/exploring-the-wcf-named-pipe-binding-part-1.aspx

我要将绑定更改为 http,这将解决我的问题。

于 2012-07-20T15:25:37.017 回答