【发布时间】:2021-04-19 00:36:44
【问题描述】:
我需要在我的一个控制器方法中返回HttpResponseMessage,并在少数情况下向其中添加一个cookie。
我参考了几篇文章,但无法解决。例如:
- How add Cookies to http request header in ASP .NET Core MVC
- HTTP Response Headers in ASP.NET Core
- HTTP Response Headers in ASP.NET Core
我使用了类似于下面的 .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