Не удается получить доступ к файлам cookie, установленным контроллером Web Api в контроллере MVC - PullRequest
0 голосов
/ 28 декабря 2018

Я установил некоторые куки на сервере в контроллере WebApi через HttpResponse.Но когда я пытаюсь получить доступ к этим куки в моем контроллере MVC, они исчезают.Эти контроллеры находятся в одном проекте.

Контроллер Web Api

   [HttpPost]
    public HttpResponseMessage Post([FromBody] string value)
    {
        HttpResponseMessage response = new HttpResponseMessage();

        int width = 0;
        Int32.TryParse(value, out width);
        CookieHeaderValue cookieHeaderValue = null;
        if (width < 768)
        {
            cookieHeaderValue = new CookieHeaderValue("device-type", "mobile");
        }
        else
        {
            cookieHeaderValue = new CookieHeaderValue("device-type", "non-mobile");
        }
        cookieHeaderValue.Expires = DateTimeOffset.Now.AddMinutes(30);
        cookieHeaderValue.Domain = Request.RequestUri.Host;
        cookieHeaderValue.Path = "/";

        response.Headers.AddCookies(new CookieHeaderValue[] { cookieHeaderValue });


        response.StatusCode = HttpStatusCode.OK;
        return response;
    }

Контроллер MVC

            if (HttpContext.Response.Cookies["device-type"] != null &&
                HttpContext.Response.Cookies["device-type"].ToString() == "mobile")
            {
                loggerwrapper.PickAndExecuteLogging("ordering cities");
                region_LocationListings = region_LocationListings.OrderByDescending(r => r.locationlistings.Count).ToList();
            }
            CityListing.region_locationlist_dictionary[countryname.ToUpper()] = region_LocationListings;

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Вот так у меня все получилось

Контроллер веб-API

    [HttpPost]
    public HttpResponseMessage Post([FromBody] string value)
    {
        int width = 0;
        Int32.TryParse(value, out width);
        string devicevalue = null;
        if (width < 768)
        {
            devicevalue = "mobile";
        }
        else
        {
            devicevalue = "non-mobile";
        }
        var cookie = new CookieHeaderValue("device-type", devicevalue);
        cookie.Expires = DateTime.Now.AddMinutes(30);
        cookie.Domain = Request.RequestUri.Host;
        cookie.Path = "/";
        HttpResponseMessage response = new HttpResponseMessage();
        response.Headers.AddCookies(new CookieHeaderValue[] { cookie });
        return response;
    }

Контроллер MVC

string devicetype = HttpContext.Request.Cookies["device-type"].Value;
0 голосов
/ 28 декабря 2018

Для установки файлов cookie Вы будете использовать Response

public IHttpActionResult Post([FromBody] string value)
{
    int width = 0;
    Int32.TryParse(value, out width);
    HttpCookie deviceType = new HttpCookie("device-type");
    if (width < 768)
    {
        deviceType.Value = "mobile";
    }
    else
    {
        deviceType.Value = "non-mobile";
    }
    deviceType.Expires = DateTime.Now.AddMinutes(30);
    deviceType.Domain = Request.RequestUri.Host;
    deviceType.Path = "/";
    HttpContext.Current.Response.Cookies.Add(deviceType);
    return Ok();
}

Чтобы получить файлы cookie в вашем контроллере, вы должны использовать Request

Request.Cookies["device-type"], а не объект ответа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...