2013-05-13 17 views
1

我想站出来使用服务堆栈的服务。该服务需要符合肥皂1.1标准。如何删除服务堆栈中的*响应约定?

现在我试图使用的操作对象被称为SendGetAccountResponse,并且我没有创建任何响应类,所以这将是一个异步服务。当我运行该项目的操作/消息不存在。

现在,如果我去并将该DTO重命名为SendGetAccountR_esponse或SendGetAccountNotification,那么该操作就会出现,我可以调用该操作。

有些东西告诉我有某种约定会在响应结束时停止操作来显示并用作请求对象。

有没有人知道我在哪里/如何将这些约定关闭?

DTO命名约定

命名约定:{请求DTO名称} +响应

实施例:请求DTO:DeleteCustomer - >响应DTO:DeleteCustomerResponse。 如果您保留原样的服务,REST端点将不存在。所以你需要把它们全部挂在同一个URL上。

https://github.com/ServiceStack/ServiceStack/wiki/SOAP-support

回答

2

{RequestDtoName}Response约定是不可拆卸的。

它用于猜测默认情况下匹配的请求DTO的响应应该是什么。响应类型可以通过在服务操作的签名指定的,如被覆盖:

public class MyService 
{ 
    public MyCustomResult Get(MyRequest request} {} 
} 

或使用上的要求IReturn<T>标记指定它DTO,如:

public class MyRequest : IReturn<MyCustomResult> {} 
+0

所以也没办法禁用它,只需重写响应对象? – 2013-05-13 03:57:49

+1

它是不可移动的,因为它是在一些地方假定的惯例,例如,它会影响[错误处理](https://github.com/ServiceStack/ServiceStack/wiki/Error-Handling#error-response-types),并影响生成的元数据页面。 – mythz 2013-05-13 04:00:32

+0

啊我明白了,现在有道理。谢谢你对此的回复。也许你可以帮助我遇到不同的情况,http://stackoverflow.com/questions/16514575/service-stack-serialization-exception-for-soap-1-1 – 2013-05-13 04:02:46