为什么在类.cs文件中写入时名称“请求”不存在

本文关键字:请求 不存在 cs 文件 为什么 | 更新日期: 2023-09-27 18:33:18

我想将以下一段代码从 c# aspx.cs 文件移动到独立的 class.cs 文件中。

string getIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (String.IsNullOrEmpty(getIP)) getIP = Request.ServerVariables["REMOTE_ADDR"];

这段代码曾经驻留在 aspx.cs 文件的page_load中工作正常,但它在类文件中引发了错误。

在 aspx.cs 文件中,"请求"不需要"使用",并且在此上下文中不提供任何请求。

如何解决此问题?

为什么在类.cs文件中写入时名称“请求”不存在

请求是页面类的属性。因此,您无法从"独立"类访问它。

但是,您仍然可以通过HttpContext.Current获取HttpRequest

 var request = HttpContext.Current.Request;

请注意,这即使在静态方法中也有效。但前提是您位于 HttpContext 中(因此不在 Winforms 应用程序中)。所以你应该确保它不是null

if (HttpContext.Current != null)
{
    var request = HttpContext.Current.Request;
}

编辑:当然,您也可以将请求作为参数传递给使用它的方法。这是很好的做法,因为它没有它就不起作用。通过这种方式,每个客户端都会立即知道这个类/方法是否有效。

它不起作用的原因是无法访问类库项目中的服务器变量。

您应该避免尝试将其行为像 Web 类,而是通过普通参数将所需的信息传递给类对象。