C# 如何从web服务向客户端返回状态码?

C# 如何从web服务向客户端返回状态码?,c#,asp.net-web-api2,http-response-codes,C#,Asp.net Web Api2,Http Response Codes,我正在使用webapi 2对C#webservice进行编码,如果客户端未获得正确凭据的授权,我希望能够向客户端发送StatusCode的Unauthorized 以下是ApiController过滤器代码: public class ApiAuthorizeAttribute : AuthorizeAttribute { protected override bool IsAuthorized(HttpActionContext actionContext) {

我正在使用
webapi 2
C#
webservice进行编码,如果客户端未获得正确凭据的授权,我希望能够向客户端发送
StatusCode
Unauthorized

以下是
ApiController
过滤器代码:

public class ApiAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool IsAuthorized(HttpActionContext actionContext)
    {
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            return true;
        }
        else
        {
            var httpResponseMessage = new HttpResponseMessage();
            httpResponseMessage.StatusCode = System.Net.HttpStatusCode.Unauthorized;
            actionContext.Response = httpResponseMessage;
            return false;
        }
    }
}
以下是
HttpClient
代码:

private async Task<bool> RequestAuthorizeAsync(string serverAddress)
{
    using (HttpClient client = new HttpClient())
    {
        using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, serverAddress))
        {
            request.Headers.Authorization = null;
            using (HttpResponseMessage response = await client.SendAsync(request))
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
    }
}
专用异步任务请求授权异步(字符串服务器地址)
{
使用(HttpClient=new HttpClient())
{
使用(HttpRequestMessage请求=新HttpRequestMessage(HttpMethod.Get,serverAddress))
{
request.Headers.Authorization=null;
使用(HttpResponseMessage response=wait client.SendAsync(请求))
{
if(response.StatusCode==HttpStatusCode.OK)
{
返回true;
}
其他的
{
返回false;
}
}
}
}
}
IsAuthorized
函数返回
false
时,设置了
httpResponseMessage
对象后,
HttpClient
仍返回200的
StatusCode
,而不是401的
StatusCode

请帮助我将401的
StatusCode
返回到
HttpClient

if (response.StatusCode == HttpStatusCode.OK)
                {
                    response.StatusCode == HttpStatusCode.OK;
                    return response;
                }
                else
                {
                    throw new HttpResponseException(
     Request.CreateErrorResponse(HttpStatusCode.Unauthorized, myCustomMessage));
                }
可能重复: 查看.Net的

然后你可以返回一个
任务
,就像这样

            if (response.StatusCode == HttpStatusCode.OK)
            {
                return Ok();
            }
            else
            {
                return Unauthorized();
            }

另外,客户机代码中的if/else可以更改为return response.StatusCode==HttpStatusCode.OK