【问题标题】:.Net Core RequestHttpMessage AddCookies to Header in .Net Core Web Api.Net Core RequestHttpMessage AddCookies 到 .Net Core Web Api 中的标头
【发布时间】:2021-04-19 00:36:44
【问题描述】:

我需要在我的一个控制器方法中返回HttpResponseMessage,并在少数情况下向其中添加一个cookie。

我参考了几篇文章,但无法解决。例如:

我使用了类似于下面的 .NET Framework 代码,但我在 .NET Core 中需要它:

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, content);

if (!string.IsNullOrEmpty(cookieToken))
{
    response.Headers.AddCookies(new[]
    {
        new CookieHeaderValue("MyCookie", cookieToken)
        {
            Expires = DateTimeOffset.Now.AddHours(4),
            Path = "/",
            HttpOnly = true,
            Secure = true,
        }
    });
}

到目前为止,我已经尝试了以下代码来返回状态代码和消息。

protected IActionResult CreateInternalServerResponse<T>(T data) =>
    StatusCode((int)HttpStatusCode.InternalServerError, data);

     
var responseMessage = 
    CreateInternalServerResponse(
        "Call to  Api failed. Response received: " 
        + (jsonResp["message"]));

但我不确定如何添加 cookie。

【问题讨论】:

  • 您遇到了什么问题?
  • 我没有 HttpResponseMessage,即使我使用 Response.Headers ,它也没有 addcookie。其他问题是 CookieHeaderValue 接受 Dictionary.
  • 你能分享更多的上下文吗?这是代码是 API 控制器的一部分吗?如果我理解正确,您想在 API 返回的响应中添加一些 cookie,对吗?你能分享一下没有cookie就返回响应的代码吗?
  • 是的。我已经为没有 cookie 响应添加了 IActionResult。但我不知道如何处理 cookie 案。我已经编辑了原帖

标签: c# asp.net-core asp.net-apicontroller


【解决方案1】:

试试下面的代码:

public IActionResult Get()
{
    //...

    var responseMessage = CreateInternalServerResponse("Call to  Api failed. Response received: " + (jsonResp["message"]));
    
    Response.Cookies.Append("MyCookie", "cookieToken", new CookieOptions()
    {
        Expires = DateTimeOffset.Now.AddHours(4),
        Path = "/",
        HttpOnly = true,
        Secure = true,
    });

    return responseMessage;
}

【讨论】:

    猜你喜欢
    • 2018-05-08
    • 2019-04-28
    • 2020-01-26
    • 2021-09-24
    • 1970-01-01
    • 2017-07-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多