Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET-在控制器响应中设置状态代码_C#_Asp.net - Fatal编程技术网

C# ASP.NET-在控制器响应中设置状态代码

C# ASP.NET-在控制器响应中设置状态代码,c#,asp.net,C#,Asp.net,在Web API控制器的响应中发送特定的状态代码时,我有点困惑。下面是一个简单控制器方法的示例: public IHttpActionResult GetDeliveryMethods() { if (AuthenticationControl) { return Ok(db.DeliveryMethods); } else return Sta

在Web API控制器的响应中发送特定的状态代码时,我有点困惑。下面是一个简单控制器方法的示例:

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根据回复状态做你的事情,希望有用