C# ASP.NET-在控制器响应中设置状态代码
在Web API控制器的响应中发送特定的状态代码时,我有点困惑。下面是一个简单控制器方法的示例:C# ASP.NET-在控制器响应中设置状态代码,c#,asp.net,C#,Asp.net,在Web API控制器的响应中发送特定的状态代码时,我有点困惑。下面是一个简单控制器方法的示例: public IHttpActionResult GetDeliveryMethods() { if (AuthenticationControl) { return Ok(db.DeliveryMethods); } else return Sta
public IHttpActionResult GetDeliveryMethods()
{
if (AuthenticationControl)
{
return Ok(db.DeliveryMethods);
}
else
return StatusCode(HttpStatusCode.Unauthorized);
}
“AuthenticationControl”表示一些过程检查,如果客户端可以从服务器获取数据。整个方法运行良好,但当我从服务器状态代码返回响应时,总是200 OK。
我不明白为什么,这个响应和状态代码的声明也在VS的主控制器模板中
如何发送状态代码声明作为响应?返回HttpResponse而不是当前的返回类型
这允许您设置HTTP状态代码返回HttpResponse,而不是当前的返回类型
这允许您设置HTTP状态代码您似乎在问为什么此代码总是返回200。您是否考虑过放置一个断点并确认它确实命中了
返回状态码()
?是的,但当我将响应设置为“BadRequest:或“NotFound”时,状态码被更改。因此问题可能在于代码中最后一行的声明,即不更改代码号。我还尝试将最后一行更改为“Unauthorized”()",但没有效果。我不确定您在AuthenticationControl中使用了什么,但您可以有一个类似于公共类InfoModule:IHttpModule的类,它获取上下文并根据业务逻辑var context=HttpContext.Current;然后根据业务规则返回context.Response.Status,然后返回GetDeliveryMethods根据响应状态执行操作希望有用您似乎在问为什么此代码总是返回200。您是否考虑过放置一个断点并确认它确实命中了return StatusCode()
?是的,但当我将响应设置为“BadRequest:或”NotFound“时,状态代码已更改。所以问题可能是代码中最后一行的声明,即代码号未更改。我还尝试将最后一行更改为“Unauthorized()”,但没有效果。我不确定您在AuthenticationControl中使用了什么,但您可以有一个类似于公共类InfoModule:IHttpModule的类,它获取上下文并根据业务逻辑var context=HttpContext.Current;然后根据业务规则返回context.Response.Status,然后返回GetDeliveryMethods根据回复状态做你的事情,希望有用