2013-03-20 63 views
4

我有简单的服务堆栈Web服务,它将Name作为输入参数。从this thread,我了解使用新API时不再需要ResponseStatus属性。但是,当我尝试使用fiddler组合没有名称的请求时,它会按预期返回400响应代码,但不包含有关异常的任何信息。那么,新的API是否提供了特别针对非.NET客户端的错误描述。如果没有,是否有可能提供这些信息。在ServiceStack新API中处理错误

public object Any(CustomerRequest request) 
{ 
    if (request.Name == null) 
    { 
    throw new ArgumentException("Name is required"); 
    } 

    var objCustomer = //get customer from DB 

    return objCustomer; 
} 

public class CustomerRequest 
{ 
    public string Name {get;set;} 
    public bool IsActive {get;set;} 
} 
+0

什么是您的服务类继承? – mickfold 2013-03-20 18:18:02

+0

class CustomerService:Service – Sunny 2013-03-20 18:28:45

+0

我根据问题中的信息编写了一个快速测试项目。我在正文中收到400个http代码和一个错误响应。 500错误是内部服务器错误,所以我认为你的测试项目中可能存在一个错误。 – mickfold 2013-03-20 19:01:12

回答

3

您不应该需要在新的API中添加ResponseStaus。按照penfold的例子,你应该得到{"ResponseStatus":{"ErrorCode":"ArgumentException","Message":"Name is required","Errors":[]}}作为回应。

您的代码库中是否还有CustomerResponse类?如果是这样,请尝试将其评论或删除。即使您在发生异常时返回object ServiceStack仍会查找传统命名的响应类型(请参阅here)并尝试填充ResponseStatus属性。

+0

感谢您的收获。现在,我留下了上面评论中发布的命名约定问题,任何人都可以请指教。 – Sunny 2013-03-21 14:40:56

+0

你能更具体地说明'命名约定问题'吗?如果你为你的服务返回'object',那么CustomerResponse类(和其他'Response'类)就是无效代码,因此将其删除。您是否需要我缺少的CustomReponse?如果是这样,可能会发布另一个问题 – paaschpa 2013-03-21 15:59:28

+0

是的,我只是发送客户作为回应,以解决问题。但是,如果我要发送自定义响应,那么它也应该是同样的权利,我的意思是将客户填充到自定义对象中并返回它。由于返回类型是对象。 – Sunny 2013-03-21 16:06:22