如何在MVC控制器中返回IHttpActionResult?

时间:2015-10-13 10:23:26

标签: asp.net-mvc asp.net-mvc-4

我修改了MVC Controller,从ApiController中提取了一些代码:

public class LoginController : Controller
{
    public async Task<IHttpActionResult> Login(LoginModel model)
    {
        var success = await _accountClient.Login(model);
        if (!success)
        {
            return new UnauthorizedResult(Enumerable.Empty<AuthenticationHeaderValue>(), new HttpRequestMessage());
        }
        return new OkResult(new HttpRequestMessage());
    }
}

这看起来或感觉不对,尤其是我创建新HttpRequestMessage的部分;我很确定应该以某种方式来自传入的Request,但我无法弄清楚它应该来自哪里。

另外,如何为IEnumerable<AuthenticationHeaderValue>构造函数的challenges参数创建UnauthorizedResult对象?

1 个答案:

答案 0 :(得分:1)

您可以将标题添加到Response对象

Response.AddHeader("Token","your-generated-token");

您也可以将操作方法​​更改为

public async Task<HttpStatusCodeResult> Login(LoginModel model)
{
    var success = await _accountClient.Login(model);
    if (!success)
    {
        return new HttpStatusCodeResult(HttpStatusCode.Unauthorized);
    }
    return new HttpStatusCodeResult(HttpStatusCode.Ok);
}