在VS 2013中添加对Servicestack简单服务的引用失败

时间:2015-09-14 08:11:56

标签: soap visual-studio-2013 wsdl servicestack

我有一个有趣的问题。如果我的servicestack方法上有一个返回对象并且wnat使用SOAP,VS2013可以生成一个带有添加服务引用的代理。但是如果我在方法上有一个返回类型字符串,它会失败并显示“自定义工具警告:无法导入wsdl:portType”和另外3个错误。

方法之间的唯一区别是:

    [TerminalAuth]
    public CloseOrderResponse Any(CloseOrder dto)
    {

        var resp = new CloseOrderResponse() {Data = "bla"};
        return resp;

    }
    [TerminalAuth]
    public string Any(CloseOrder2 dto)
    {
        return "bla";
    }

如果我评论/隐藏第二种方法它会生成reference.cs就好了,但是第二种方法(或者只有第二种方法)它会失败。结果是reference.cs只有注释头而没有代码

任何想法?

/埃里克

1 个答案:

答案 0 :(得分:1)

请务必阅读ServiceStack SOAP Limitations

  

SOAP期望每个请求始终返回相同的响应DTO。   因此,您需要遵循响应DTO命名约定,否则   ServiceStack将无法生成WSDL和SOAP端点   不行。

DTO命名约定

命名约定:{Request DTO Name} +回复

示例:请求DTO:DeleteCustomer - >回复DTO:DeleteCustomerResponse

您可以使用[Exclude]属性隐藏在WSDL中生成的不兼容类型,例如:

[Exclude(Feature.Soap)]
public class CloseOrder2 
{
}