【发布时间】:2020-06-02 21:37:57
【问题描述】:
我在一个 ASP.NET MVC 项目上工作,我创建了一个名为 AuthenticationController 的 Controller,此控制器包含一个名为 static method 的 User_Access_Validation。
此方法检查一些 cookies 值。
这就是方法代码:
public void User_Access_Validation()
{
if (Request.Cookies["X_8"] == null || Request.Cookies["X_5"] == null || Request.Cookies["X_T"] == null)
{
Response.Redirect("/Login");
}
}
现在一切正常,但是当我将此方法更改为 static 方法时,我在 Visual Studio 的 ErrorList 中遇到了这 四个错误强>
Error CS0120 An object reference is required for the non-static field, method, or property
Error CS0120 An object reference is required for the non-static field, method, or property
Error CS0120 An object reference is required for the non-static field, method, or property
Error CS0120 An object reference is required for the non-static field, method, or property
所以请我将此方法设为static 方法,并修复此错误
【问题讨论】:
-
Request 是一个实例属性。试试 HttpContext.Current.Request
-
我试了一下,但
Current没有在 Intellisense 中显示 -
嗯。这段代码在哪里(你提到的控制器、api 方法、其他地方的某个类和 Request 不是我认为的那样)以及你使用的是什么版本的东西? docs.microsoft.com/en-us/dotnet/api/…
-
是的,我使用控制器,但
Current没有在智能感知中显示,Visual Studio 在它下方显示一个错误红色下划线。 -
This answer 有助于在 ASP.NET Core 中提供对
HttpContext(包括请求和响应)的静态访问。这不容易获得,因为它不是一个好的模式。但是,正如答案中所述,在您需要将旧代码移动到新控制器中的情况下,它可能会有所帮助。我很好奇为什么它必须是静态的。但我明白了。有时我们只需要事情以某种方式表现。
标签: c# asp.net asp.net-mvc cookies