【问题标题】:How to remove *Response convention in service stack?如何删除服务堆栈中的*响应约定?
【发布时间】:2013-05-13 00:22:31
【问题描述】:

我正在尝试使用服务堆栈建立服务。该服务需要满足soap 1.1标准。

现在我尝试使用的操作对象称为 SendGetAccountResponse,我没有创建响应类,因此这将是一个异步服务。当我运行项目时,操作/消息不存在。

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

某事告诉我有某种约定会停止操作,其末尾带有 Response 以显示并用作请求对象。

有谁知道我可以在哪里/如何关闭这些约定?

DTO 命名约定

命名约定:{Request DTO Name} + Response

示例:请求 DTO:DeleteCustomer --> 响应 DTO:DeleteCustomerResponse。 如果您将服务保持原样,则 REST 端点将不存在。因此,您需要将它们全部连接到同一个 URL。

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

【问题讨论】:

    标签: c# asp.net web-services soap servicestack


    【解决方案1】:

    {RequestDtoName}Response 约定不可删除。

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

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

    或通过使用请求 DTO 上的 IReturn<T> 标记来指定它,例如:

    public class MyRequest : IReturn<MyCustomResult> {}
    

    【讨论】:

    • 那么没有办法禁用它,只是覆盖响应对象?
    • 它是不可移动的,因为它是在一些地方假设的约定,例如它会影响Error Handling 并影响生成的元数据页面。
    • 啊,我明白了,现在说得通了。感谢您对此的回复。也许你可以帮助我解决一个不同的场景,stackoverflow.com/questions/16514575/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多