Web services 具有多个IP地址的WCF自托管ServiceHost错误

Web services 具有多个IP地址的WCF自托管ServiceHost错误,web-services,wcf,self-hosting,servicehost,Web Services,Wcf,Self Hosting,Servicehost,我正在使用WCF自托管一个web服务。主机有多个以太网端口,因此我正在创建具有多个URI的ServiceHost。创建服务主机时,出现以下错误: “此集合已包含具有方案http的地址。此集合中每个方案最多只能有一个地址。 参数名称:项“ 代码如下: Uri[] uriSet = new Uri[ipList.Count]; for (int i=0; i<ipList.Count; i++) { string baseAddress = string.Format("http://

我正在使用WCF自托管一个web服务。主机有多个以太网端口,因此我正在创建具有多个URI的ServiceHost。创建服务主机时,出现以下错误:

“此集合已包含具有方案http的地址。此集合中每个方案最多只能有一个地址。 参数名称:项“

代码如下:

Uri[] uriSet = new Uri[ipList.Count];
for (int i=0; i<ipList.Count; i++)
{
    string baseAddress = string.Format("http://{0}:{1}/mynamespace", ipList[i], myport);
    uriSet[i] = new Uri(baseAddress);
}

host = new ServiceHost(webServiceType, uriSet);
Uri[]uriSet=newuri[ipList.Count];

对于(int i=0;i您可以使用特殊IP地址0.0.0.0或仅本地主机来匹配本地计算机的任何IP地址。因此,您应该只需要一个基址URI,具有
localhost
0.0.0

host = new ServiceHost(webServiceType, new Uri[] { new Uri("http://localhost:80/mynamespace") });

*其中80是端口


我已经尝试了这两种方法。这两种方法对web服务都有效。当用户从服务器获取已发布的WSDL时,WSDL中的地址为0或localhost。WSDL中有2个XSD引用,当直接连接到服务器以创建web客户机时,这些方法不起作用。WSDL中有以下引用:it:由于对localhost的引用,这些引用在创建web客户端时不起作用。如果定义中有IP,它们确实起作用。看起来有一些代码可以将WSDL展平到单个文件中。这可能会起作用。我将尝试一下……我能够展平WSDL。现在效果更好了。没有XSD文件。但是,在WSDL中,服务端口指的是localhost,这会导致直接连接到服务器的应用程序在连接时出现问题。在我看来,这似乎是应用程序的问题,因为应用程序确实知道正确的IP是什么,但它使用WSDL而没有在端口部分替换正确的IP。
host = new ServiceHost(webServiceType, new Uri[] { new Uri("http://0.0.0.0:80/mynamespace") });