#c# #asp.net-core #cookies
Вопрос:
Я пытаюсь получить доступ к файлам cookie из статического класса в Asp.net Ядро , до сих пор я не мог найти никаких полезных тем в Google. есть какие-Нибудь Предложения?
Я уже сделал это в asp.net:
public static string GetString(string Key)
{
var format = System.Web.HttpContext.Current.Request.Cookies["Language"];
if (format == null)
format = new HttpCookie("Language") { Value = "Fa" };
ResourceManager rm = new ResourceManager("Ippv.Virtual.Application.Properties." format.Value,
Assembly.GetExecutingAssembly());
return rm.GetString(Key);
}
Как я могу написать эквивалент этого кода в asp.net ядро?
Комментарии:
1. Показ некоторого соответствующего кода поможет. Почему вы не можете передать значение файла cookie в качестве параметра статическому методу?
Ответ №1:
В ASP.NET, мы можем получить доступ к файлам cookie с помощью httpcontext.current, но в ASP.NET Ядро, в настоящее время нет htttpcontext. В ASP.NET Ядро, все разделено и модульно.Httpcontext доступен из объекта запроса и интерфейса IHttpContextAccessor, который находится в разделе «Microsoft.Пространство имен AspNetCore.Http», и оно доступно в любом месте приложения. Обратитесь к следующему коду:
public class TestController : Controller
{
private readonly IHttpContextAccessor _httpContextAccessor;
public TestController(IHttpContextAccessor httpContextAccessor)
{
this._httpContextAccessor = httpContextAccessor;
}
public IActionResult Index()
{
//read cookie from IHttpContextAccessor
string cookieValueFromContext = _httpContextAccessor.HttpContext.Request.Cookies["key"];
//read cookie from Request object
string cookieValueFromReq = Request.Cookies["Key"];
//set the key value in Cookie
Set("kay", "Hello from cookie", 10);
//Delete the cookie object
Remove("Key");
return View();
}
/// <summary>
/// Get the cookie
/// </summary>
/// <param name="key">Key </param>
/// <returns>string value</returns>
public string Get(string key)
{
return Request.Cookies[key];
}
/// <summary>
/// set the cookie
/// </summary>
/// <param name="key">key (unique indentifier)</param>
/// <param name="value">value to store in cookie object</param>
/// <param name="expireTime">expiration time</param>
public void Set(string key, string value, int? expireTime)
{
CookieOptions option = new CookieOptions();
if (expireTime.HasValue)
option.Expires = DateTime.Now.AddMinutes(expireTime.Value);
else
option.Expires = DateTime.Now.AddMilliseconds(10);
Response.Cookies.Append(key, value, option);
}
/// <summary>
/// Delete the key
/// </summary>
/// <param name="key">Key</param>
public void Remove(string key)
{
Response.Cookies.Delete(key);
}
Комментарии:
1. Спасибо, Что Очень Помогло