我想将以下一段代码从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中工作得很好,但它在类文件中引发了错误。
'asp'在aspx.cs文件中不需要'使用',在此上下文中不提供。
如何解决这个问题?
答案 0 :(得分:48)
Request是页面类的属性。因此,您无法从“独立”类访问它。
但是,无论如何都可以通过HttpContext.Current
var request = HttpContext.Current.Request;
请注意,即使在静态方法中也是如此。但是只有你在HttpContext中(因此不在Winforms应用程序中)。所以你应该确保它不是null
:
if (HttpContext.Current != null)
{
var request = HttpContext.Current.Request;
}
编辑:当然,您也可以将请求作为参数传递给使用它的方法。这是一种很好的做法,因为它没有用。通过这种方式,每个客户端都会立即知道此类/方法是否有效。
答案 1 :(得分:1)
它不起作用的原因是因为您无法访问类库项目中的服务器变量。
您应该避免尝试将此操作设置为Web类,而是通过普通参数将所需信息传递给类对象。