在单个wsdl中具有多个方法名称重复的服务协定的WCF服务

本文关键字:服务 WCF 方法 wsdl 单个 | 更新日期: 2023-09-27 18:19:31

继续这个和这个问题。我有两份使用相同方法的服务合同:

[ServiceContract]
public interface IServices1
{
    [OperationContract]
    string GetData(int value);
}
[ServiceContract]
public interface IServices2
{
    [OperationContract]
    string GetData(int value);
}

和服务:

public class Service : IServices1, IServices2
{
    string IServices1.GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }
    string IServices2.GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }
}

根据我无法控制的原因:

  • 这个答案不适合我,我需要保留原来的名字
  • 这个答案不适合我,我需要一个wsdl文件。如果您使用不同的名称空间,当您尝试从服务主页打开单个wsdl时(http://addresToService/Service.svc?singleWsdl)获取错误:

System.NotSupportedException:无法为此服务生成单个WSDL文档。找到多个服务约定命名空间(IServices1、IServices2)。确保所有服务契约都具有相同的命名空间。

  • 我需要一个带有多个端点的服务
  • 我需要这样的服务(最好在WCF上)

总之,我需要具有多个服务契约的WCF服务,这些服务契约在单个wsdl中具有重复的方法名。有办法实现吗?

在单个wsdl中具有多个方法名称重复的服务协定的WCF服务

从wsdl文件生成类。保存的内容http://pastebin.com/277DFF7H在一个文件中,比如"service.wsdl"。不要忘记<?xml version="1.0" encoding="UTF-8"?>标记必须位于第一列。

然后从Developer命令提示符运行wsdl.exeutil,如下所示:

wsdl service.wsdl /out:service.cs

现在您已经拥有wsdl所需的契约,并且可以进行任何需要的更改。

希望能有所帮助。