在class.cs文件中写入时为什么名称’Request’不存在?

我想将以下代码从ac#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”文件中,“请求”不需要“使用”,并且在此上下文中不提供任何内容。

我该如何解决这个问题?

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

但是,无论如何都可以通过HttpContext.Current获取HttpRequest

  var request = HttpContext.Current.Request; 

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

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

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

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

您应该避免尝试将此操作设置为Web类,而是通过普通参数将所需信息传递给类对象。