首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Odata v3中出现C#“找不到该段的资源”错误,状态代码为200

Odata v3中出现C#“找不到该段的资源”错误,状态代码为200
EN

Stack Overflow用户
提问于 2019-04-12 22:36:11
回答 2查看 1K关注 0票数 3

我正在尝试通过Odata V3从项目在线api Url获取数据。问题是,如果没有找到资源,我会得到一个状态代码200,请求会通过验证,我的程序会因为无效数据而中断

示例URL请求https://QASystem/DevQA/_api/ProjectData/test

如果测试不存在,我会得到以下响应

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
    <code></code>
    <message xml:lang="en-US">Resource not found for the segment 'test'></message>
</error>

即使没有找到段,状态码也会返回200

我的示例简化了响应检查

代码语言:javascript
复制
HttpResponseMessage response = await ExecutionContext.HttpClient.GetAsync(odataQuery);

// Different checks in real code but here a simple one 
if (response.StatusCode.Equals(HttpStatusCode.ServiceUnavailable) ||
    response.StatusCode.Equals(HttpStatusCode.RequestTimeout) || 
    response.StatusCode.Equals(HttpStatusCode.NotFound)
    // Log error Here 
    throw new TransientFaultException();

即使状态码为200,如何检查错误数据?有没有办法处理这个问题?

EN

回答 2

Stack Overflow用户

发布于 2019-04-15 17:07:48

您不能仅仅依靠HTTP状态响应,因为它取决于API是如何开发的。用户仍然可以在消息中发送带有错误响应的HTTP 200状态。因此,最好检查并解析您正在获得的响应消息。最好是两者兼而有之。

代码语言:javascript
复制
HttpResponseMessage response = await ExecutionContext.HttpClient.GetAsync(odataQuery);

// Different checks in real code but here a simple one 
if (response.StatusCode.Equals(HttpStatusCode.ServiceUnavailable) || 
    response.StatusCode.Equals(HttpStatusCode.RequestTimeout) || 
    response.StatusCode.Equals(HttpStatusCode.NotFound)
    if (response.Content.ToString().Contains("error") ||
        response.Content.ToString().Contains("Resource not found"))
        // Log error Here 
        throw new TransientFaultException();        
票数 0
EN

Stack Overflow用户

发布于 2019-04-15 17:12:26

如果你想要一个快速的方法来解决这个问题,你可以分析response.Content属性中的相关错误消息。

但是,如果您更愿意以一种更传统的方式完成此操作,则可以考虑使用Proper OData client而不是手动调用HttpClient

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55654042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档