我正在尝试从我的应用程序返回适当的 Http 代码和响应,但我很挣扎。似乎有两种方法可以返回特定的 http 响应。
我想处理它的方式是抛出一个HttpResponseException
:
public Information Get(int apiKey)
{
if (!_users.Authenticate(apiKey))
{
var response = new HttpResponseMessage();
response.StatusCode = (HttpStatusCode)401;
response.ReasonPhrase = "ApiKey invalid";
throw new HttpResponseException(response);
}
return _info.Get();
}
但是,当我这样做时,我看到的响应只是一个空的 200 响应!
似乎您还可以更改操作方法的签名以返回HttpResponseMessage
如下所示:
public HttpResponseMessage Get()
{
if (!_users.Authenticate(apiKey))
{
return Request.CreateResponse((HttpStatusCode) 401, "ApiKey invalid");
}
return Request.CreateResponse((HttpStatusCode) 200, _info.Get());
}
如果我能提供帮助,我真的不想这样做,我宁愿将我的返回类型作为我要检索的对象,而不是每次都将其包装在HttpResponseMessage
.
第一种方法返回一个空的 200 而不是 401 与我想要的消息是否有原因?