【发布时间】:2018-10-17 06:05:23
【问题描述】:
我想设置一个服务来将当前的HttpContext 注入我项目的一个类中,以便它可以管理 cookie。
我在我的 Startup.cs 类中设置了这样的服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
services.TryAddSingleton<IActionContextAccessor, ActionContextAccessor>();
services.AddMvc();
}
如何在 C# 类中使用此服务?
我的尝试是这样的:
我的班级操作cookies,我要注入当前的HttpContext。
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Session;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace grupoveiculos.Infraestrutura.Session
{
public class Cookie
{
private readonly IHttpContextAccessor _accessor;
public Cookie(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
public void Set(string chave, string valor, int? dataExpiracao)
{
CookieOptions option = new CookieOptions();
if (dataExpiracao.HasValue)
option.Expires = DateTime.Now.AddMinutes(dataExpiracao.Value);
else
option.Expires = DateTime.Now.AddMilliseconds(10);
_accessor.HttpContext.Response.Cookies.Append(chave, valor, option);
}
}
}
但是当我尝试在控制器中实例化我的Cookie 类时,它会说“没有与所需的形参访问器相对应的参数”。该错误非常合乎逻辑,它需要构造函数参数。但我希望IHttpContextAccessor 被注入,而不是我必须提供参数。
在我的控制器中我尝试过:
[HttpGet]
[Route("SelecionarIdioma")]
public IActionResult SelecionarIdioma(string cultura)
{
Cookie cookie = new Cookie(); // expecting the accessor parameter
cookie.Set("idioma", cultura, 60);
return RedirectToAction("Index", "Grupo");
}
【问题讨论】:
标签: c# asp.net-core dependency-injection asp.net-core-2.0