Web API Cookies可在本地项目中工作,但不能在服务器中工作

时间:2018-06-29 18:30:26

标签: rest asp.net-web-api2

我处理以下问题已有6天了。我正在使用cookie(在ASP.NET Web API中)保存GUID,并区分执行操作的用户。当我在VS2017项目中进行本地测试时,以下代码可以正常工作。但是,当项目上载到测试Windows Server 2012时,它会失败,在这种情况下,每次用户执行操作时,我都会得到一个不同的GUID,这意味着未保存cookie。下面的代码显示了我到目前为止所做的。方法 Utilerias.NuevoEventoSistema 在文本/日志文件中插入一条记录,并且我总是在服务器中收到消息“ cookie不存在”。几天前,我曾在另一个论坛上寻求支持,并且得到了很好的帮助,但是,该问题尚未完全解决,因此我决定在这里提出要求,因为即将生效的期限已到。我希望可以再问一次。

非常感谢您的反馈。

[HttpPost]
[Route("api/VotoInteractiva/{parameters}")]
public IHttpActionResult RegistraVoto(String parameters)
{
    var resp = new HttpResponseMessage();
    String strUserId = ObtenerCookie(resp);
    return ResponseMessage(resp);
}

public String ObtenerCookie(HttpResponseMessage resp)
{
    String strUserId = "";
    CookieHeaderValue cookie = Request.Headers.GetCookies("cosmohitsuserid").FirstOrDefault();
    Utilerias.NuevoEventoSistema("-----------------------------------", "", "", "", "");
    if (cookie != null)
    {
        strUserId = cookie["cosmohitsuserid"].Value;
        Utilerias.NuevoEventoSistema("The cookie exists", strUserId, "", "", "");
    }
    else
    {
        strUserId = Guid.NewGuid().ToString();
        cookie = new CookieHeaderValue("cosmohitsuserid", strUserId);
        cookie.Expires = DateTime.Now.AddYears(1);
        cookie.Domain = Request.RequestUri.Host;
        cookie.Path = "/";
        resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });
        Utilerias.NuevoEventoSistema("The cookie does not exist", strUserId, "", "", "");
    }
    return strUserId;
}

0 个答案:

没有答案