【问题标题】:Handling NotFound response from Web API处理来自 Web API 的 NotFound 响应
【发布时间】:2018-02-17 03:51:51
【问题描述】:

我的一个 ASP.NET Web API 项目有这样的代码:

public HttpResponseMessage GetStatusById(int sid)
{
    try
    {
        var mds = TheRepository.GetStatusById(sid);
        if (mds != null)
        {
            return Request.CreateResponse(HttpStatusCode.OK, TheModelFactory.Create(mds));
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.NotFound);
        }
    }
    catch (Exception ex)
    {
        return Request.CreateResponse(HttpStatusCode.BadRequest, ex);
    }
}

在同一个解决方案中,但在另一个项目中,我正在编写客户端(ASP.Net 网站),它将通过此​​ WebAPI 读取和写入数据。

首先客户端应该检查数据库中是否已经存在记录:

public async Task<ActionResult> Create([Bind(Include = "id,description")] MDS mds)
{
    if (mds == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No data given to server");
    }
    else
    {
        MDS reqMds = await _mdApiService.GetMDS ByStatus(Convert.ToInt32(mds.Id));                    

        if (reqMds == null )
        {
            await _mdApiService.CreateMDS(mds);
        }
        else
        {
            return new HttpStatusCodeResult(HttpStatusCode.Conflict, "Already exists");
        }
    }
    return View("Details", mds);
}

当我调用此方法时,我在浏览器中得到 NotFound-Page,而不是获取对客户端(网站)的响应并对其进行解析。 目标是显示来自 WebSite Project 的错误,而不是来自 Web API 项目的错误。

通过 Web API 检查客户端记录已存在的正确方法是什么?

【问题讨论】:

  • 您的问题不清楚,因为底部的操作方法没有调用顶部的 Web API 方法。无论如何,应用程序不知道“项目”和“解决方案”。如果您有 2 个项目,则您有 2 个单独的应用程序,它们将像单独的应用程序一样运行。如果要共享行为,请将它们放入同一个项目或项目之间共享的类库中。

标签: asp.net .net rest asp.net-web-api


【解决方案1】:

我决定编辑我的服务器 Web API 以检查重复条目。在客户端上,仅将用户的操作传输到 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2021-03-26
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多