C# 我可以在全局可用的静态类中创建cookie吗?
我想从所有控制器访问一些功能。这些功能包括写入和读取cookie 在以前的项目中,我在一个基本控制器中创建了全局函数,并使所有控制器都继承自该控制器。但现在我想用不同的方式来做 我已将类文件C# 我可以在全局可用的静态类中创建cookie吗?,c#,asp.net-core,C#,Asp.net Core,我想从所有控制器访问一些功能。这些功能包括写入和读取cookie 在以前的项目中,我在一个基本控制器中创建了全局函数,并使所有控制器都继承自该控制器。但现在我想用不同的方式来做 我已将类文件AppFunctions.cs放在名为AppFunctions的根文件夹中: using Microsoft.AspNetCore.Http; using System; using System.Linq; namespace Projects.AppFunctions { public stat
AppFunctions.cs
放在名为AppFunctions
的根文件夹中:
using Microsoft.AspNetCore.Http;
using System;
using System.Linq;
namespace Projects.AppFunctions
{
public static class AppFunctions
{
public static void CreateCookie(string name, string value)
{
var options = new CookieOptions();
options.Expires = DateTime.Now.AddMinutes(120);
Response.Cookies.Append(name, value, options); // Red squiggly on Response
}
// More functions ...
}
}
现在我面临两个问题:
Response.Cookies.Append()代码>不被识别,我也不被鼓励添加任何用法
CreateCookie()时代码>来自控制器,我不能。错误消息是“名称CreateCookie
在当前上下文中不存在。并且使用Projects.AppFunctions
添加,或者这样调用它都没有帮助:AppFunctions.CreateCookie();
1.在控制器类()上可以找到
Response
属性。您可以像在从控制器继承的类中一样使用它。在这种情况下,您应该通过参数传递它。2.函数CreateCookie()
不再是从基类继承的函数,因此原始代码不再知道这是什么函数。因为它现在作为静态函数存在于单独的类中,所以您必须像调用AppFunctions那样调用它。CreateCookie@KingOfArrows Ok,所以我最好在调用后将它放在基类控制器中l?如果在继承基类的控制器中找到了将调用此方法的唯一代码,那么是的。如果要将其打开以供任何类使用,则将其保留在静态类中,但使其需要一个响应参数。类型应为HttpResponse
,而不仅仅是response
public static void CreateCookie(Response response, string name, string value)
{
var options = new CookieOptions();
options.Expires = DateTime.Now.AddMinutes(120);
response.Cookies.Append(name, value, options); // Red squiggly on Response
}