我有一个有趣的问题。如果我的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只有注释头而没有代码
任何想法?
/埃里克
答案 0 :(得分:1)
请务必阅读ServiceStack SOAP Limitations:
SOAP期望每个请求始终返回相同的响应DTO。 因此,您需要遵循响应DTO命名约定,否则 ServiceStack将无法生成WSDL和SOAP端点 不行。
命名约定:{Request DTO Name}
+回复
示例:请求DTO:DeleteCustomer
- >回复DTO:DeleteCustomerResponse
您可以使用[Exclude]
属性隐藏在WSDL中生成的不兼容类型,例如:
[Exclude(Feature.Soap)]
public class CloseOrder2
{
}