C# 我可以在全局可用的静态类中创建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

我想从所有控制器访问一些功能。这些功能包括写入和读取cookie

在以前的项目中,我在一个基本控制器中创建了全局函数,并使所有控制器都继承自该控制器。但现在我想用不同的方式来做

我已将类文件
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();
  • Try(响应在控制器上下文中可用)


    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
        }