我正在学习 Badrinarayanan Lakshmiraghavan 撰写的“实用 ASP.NET Web API”教程。
我认为这表明可以使用一些异常将“404 - Not Found”类型的内容发送回浏览器。但是,我只是遇到常规程序“崩溃”(弹出错误消息)。
我肯定错过了什么。谁能告诉我它可能是什么? (这里有很多类似的问题,但我找不到适合这种情况的问题)。
我明白了...
"HttpResponseException was unhandled by user code"
使用的网址...
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/