gpt4 book ai didi

c# - 抛出 HttpResponseException 会导致未处理的异常

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:48 24 4
gpt4 key购买 nike

我正在学习 Badrinarayanan Lakshmiraghavan 在“实用 ASP.NET Web API”中的教程。

我认为这表明可以使用一些异常将“404 - Not Found”类型的东西发送回浏览器。但是我只是让常规程序“崩溃”(弹出错误消息)。

我一定是漏掉了什么。谁能告诉我它可能是什么? (这里有很多类似的问题,但我找不到适合这种情况的问题)。

我明白了...

"HttpResponseException was unhandled by user code"

使用的 URL...

http://localhost:63694/api/employees/12344

代码...

public class EmployeesController : ApiController
{
private static IList<Employee> list = new List<Employee>()
{
new Employee() {
Id = 12347, FirstName = "Joseph", LastName = "Law"}
};


// GET api/employees
public IEnumerable<Employee> Get()
{
return list;
}

// GET api/employees/12345
public Employee Get(int id)
{
var employee = list.FirstOrDefault(e => e.Id == id);

if (employee == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}

return employee;
}
}

最佳答案

WebApi 应该处理异常并返回其中包含的状态代码。您可能不是在 ApiController 派生的 Controller 中运行它,而是在派生自 Controller 的 Controller 中运行它。

您最好返回带有 Employee 类型内容的 HttpResponseMessage。在这种情况下,您可以更好地控制状态代码,如下所示:

var response = Request.CreateResponse(HttpStatusCode.Notfound);
return response

// GET api/employees/12345
public HttpResponseMessage Get(int id)
{
HttpResponseMessage response = null;
var employee = list.FirstOrDefault(e => e.Id == id);

if (employee == null)
{
response = new HttpResponseMessage(HttpStatusCode.NotFound);
}
else
{
response = Request.CreateResponse(HttpStatusCode.OK, employee);
}

return response;
}

关于c# - 抛出 HttpResponseException 会导致未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com