none
wcf data service如何得到类型正确的异常实例? RRS feed

  • 问题

  • 标题有点不清楚。我详述一下:

    在客户端发起一个odata查询,例如DB.Employee.Where(e=>e.xx),当条件有误时,会收到服务端返回如下Response:

    HTTP/1.1 400 Bad Request
    Date: Fri, 25 Sep 2015 06:34:53 GMT
    Server: Microsoft-IIS/6.0
    X-Powered-By: ASP.NET
    X-AspNet-Version: 4.0.30319
    X-Content-Type-Options: nosniff
    DataServiceVersion: 3.0;
    Content-Length: 2106
    Cache-Control: private
    Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
    
    {"odata.error":{"code":"","message":{"lang":"zh-CN","value":"\u53ea\u80fd\u7ed1
    ...

    body部分是一串json,经过解析后是这个样子:

     
    {
        "odata.error":{
            "code":"",
            "message":{
                "lang":"zh-CN",
                "value":"只能绑定是 Navigation、Structural、Complex 或 Collections 的段。我们找到不属于这些类型的段“Sex”。请修改查询。"
            },
            "innererror":{
                "message":"只能绑定是 Navigation、Structural、Complex 或 Collections 的段。我们找到不属于这些类型的段“Sex”。请修改查询。",
                "type":"Microsoft.Data.OData.ODataException",
                "stacktrace":" 在 Microsoft.Data.OData.Query.InnerPathTokenBinder.BindInnerPathSegment(InnerPathToken segmentToken, BindingState state) 在 
    ......
    这个json看起来分明是一个ODataError,但客户端收到的异常是DataServiceQueryException,其中包含了一个DataServiceClientException,后者的Message就是上述json,我想问的是,如何设置才能直接拿到ODataException或ODataErrorException类型的异常。请熟悉wcf data service+odata的高手不吝指教,感谢!
    2015年9月25日 9:47

答案