Я кодирую C#
webservice, используя Web API 2
, и хотел бы иметь возможность отправить StatusCode
из Unauthorized
клиенту, если у клиента нет авторизированных правильных учетных данных.Как вернуть statusCode клиенту из веб-службы?
Вот код 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;
}
}
}
}
}
Когда функция IsAuthorized
возвращает false
, с множеством httpResponseMessage
объекта, то HttpClient
все еще возвращая StatusCode
из 200, а не StatusCode
от 401.
Могу ли я, пожалуйста, помочь с возвратом StatusCode
из 401 в HttpClient
?
Как и в сторону, ваш, если/иначе в клиентском коде можно изменить только «return response.StatusCode == HttpStatusCode.OK;'. –
Вы подтвердили, что ваш код определенно называется, кстати? –
Да, это называется. – user3736648