C# 如何使用AspNetCore抛出HttpResponseException(NotFound)

C# 如何使用AspNetCore抛出HttpResponseException(NotFound),c#,.net,asp.net-core,C#,.net,Asp.net Core,我用.NET4.5 这很简单。它要么返回学生实体,要么抛出未找到的异常。 我正在努力将其移植到.NET Core 2.0中。 根据我的理解,.net core建议返回IActionResult,因此,我只需返回NotFound()。 但是,我不确定如何抛出not HttpResponseException(not Found)异常 方法: public Student Get(Guid id) { Student student = _studentSvc.Get(id); if

我用
.NET4.5
这很简单。它要么
返回学生实体,要么抛出未找到的异常。

我正在努力
将其移植到.NET Core 2.0中。
根据我的理解,
.net core
建议返回
IActionResult
,因此,我只需返回
NotFound()。

但是,我不确定如何抛出not HttpResponseException(not Found)异常

方法:

public Student Get(Guid id)
{
    Student student = _studentSvc.Get(id);
    if (student != null)
        return student;
    else
        throw new HttpResponseException(HttpStatusCode.NotFound);
}
尝试:

public Student Get(Guid id)
{
    Student student = _svc.Get(id);
    if (student != null)
        return student;
    else
        return NotFound();
}
如果我试着像下面这样做,那么这一行
return student
抱怨不能隐式地将student转换成
…Mvc.IActionResult
什么

public IActionResult Get(Guid id)
{
    Student student = _svc.Get(id);
    if (student != null)
        return student;
    else
        return NotFound();
}

但它给出的错误无法将NotFoundResult转换为Student

您需要返回您提到的IActionResult

public IActionResult Get(Guid id)
{
    Student student = _svc.Get(id);
    if (student != null)
    {
        return Ok(student);
    }
    return NotFound();
}

您需要返回您提到的IActionResult

public IActionResult Get(Guid id)
{
    Student student = _svc.Get(id);
    if (student != null)
    {
        return Ok(student);
    }
    return NotFound();
}

如果我返回IActionResult,则此行返回学生失败,表示不能隐式地将学生转换为ActionResult;是的,这就是我最后想到的。然而,若您不想向客户机返回任何内容,但仍然想抛出NotFoundException,该怎么办。你会怎么做?如果编辑后的方法正确,你需要返回
'Ok(student)
内容(HttpStatusCode.Accepted,student)
@simbada,你仍然可以抛出一个异常,如果这是你想要做的,它会像往常一样做。但请记住,例外情况更昂贵谢谢你的帮助。我相信结果就是未来。返回HttpResponseMessage是一件老事情,不再推荐使用。如果我返回IActionResult,则此行返回学生失败,表示不能隐式地将学生转换为ActionResult;是的,这就是我最后想到的。然而,若您不想向客户机返回任何内容,但仍然想抛出NotFoundException,该怎么办。你会怎么做?如果编辑后的方法正确,你需要返回
'Ok(student)
内容(HttpStatusCode.Accepted,student)
@simbada,你仍然可以抛出一个异常,如果这是你想要做的,它会像往常一样做。但请记住,例外情况更昂贵谢谢你的帮助。我相信结果就是未来。返回HttpResponseMessage是一件老事情,不再推荐。