饼干在MVC4中消失了

时间:2014-12-19 16:01:13

标签: c# asp.net-mvc cookies httpresponse

我正在开发一个REST API项目,用户可以在其中登录并拨打电话。为了做到这一点,我创建了一个cookie,我加密用户名。我的服务器已经部署,并且发生了一些非常奇怪的事情。我不时在响应中收不到cookie。在这种情况下,我只需要在web.config文件中进行任何修改,它就会重新开始工作......我真的不明白为什么......有什么想法吗?

这是我的登录代码:

[Route("login", Order = 1)]
[HttpPost]
[HttpGet]
public async Task<HttpResponseMessage> Login([FromUri] string userId, [FromUri] string userPassword)
{
    try
    {
        Tuple<string, string> result = userService.Authenticate(userId, userPassword);

        string sessionIds = result.Item1;
        string message = result.Item2;
        CookieHeaderValue cookie = CreateSessionsCookie(sessionIds);
        cookie.Secure = true;

        // Store username for later use
        CookieHeaderValue userCookie = new CookieHeaderValue(Strings.Id, Encryption.Protect(userId, Strings.Id));
        userCookie.Secure = true;

        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, JsonConvert.DeserializeObject(message));
        response.Headers.AddCookies(new CookieHeaderValue[] { cookie, userCookie });

        return response;
    }
    catch (Exception ex)
    {
        return HandleException(ex);
    }
}

1 个答案:

答案 0 :(得分:0)

使用cookie进行宁静的Web服务有点反模式。只需在标题中包含用户名即可。

至于为何超时,我怀疑它与你的会话超时有关。