我不断收到此错误消息:对象引用未设置为对象的实例。
private static void GetIPInfo(User user)
{
string ipAddress = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
string city = string.Empty;
string region = string.Empty;
string country = string.Empty;
double? latitude = -1.00;
double? longitude = -1.00;
LocationTools.GetLocationFromIP(ipAddress, out city, out region, out country, out latitude, out longitude);
user.IPAddress = user.IPAddress; **//error is pointing here**
}
我需要实例化一些东西吗?
解决这个问题会是这样吗?
user.IPAddress new user.IPAddress = user.ipAddress;
答案 0 :(得分:2)
您对此声明的期望到底是什么:
user.IPAddress = user.IPAddress;
我希望它充其量一个无操作。碰巧的是,似乎user
变量的值为null。
目前还不清楚该方法的用途,但假设user
为null,则请求未经身份验证。奇怪的是GetXyz
方法具有void
返回类型。它应该是PopulateIPInfo
吗?在那种情况下,它听起来像是一个传递空引用的错误 - 但你真的需要决定该方法的意图......在内部创建一个新的User
实例是不太可能的从长远来看,该方法将会非常有用。
答案 1 :(得分:1)
怎么样:
user = new User; // Or whatever user is supposed to be
user.IPAddress = ipAddress; // Now you can assign an ip address to this property
答案 2 :(得分:1)
这取决于您调用 GetIPInfo(用户用户)的方式。您似乎是以 user 的身份传递null。也许你应该写类似
的东西GetIPInfo(new User());
但目前尚不清楚User是否必须以某种方式进行初始化,或者它是否足以创建一个空实例。 此外,我不明白你试图用 user.IPAddress = user.IPAddress; 这是一条似乎根本没有任何效果的指令,除非有其他一些代码IPAddress的setter导致一些附带效应,但这是我要避免的。
评论后编辑:
如果我做对了(但我不确定),也许这与你真正需要的更相似:
私有静态用户GetIPInfo() { 用户user = new User();
string ipAddress = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
string city = string.Empty;
string region = string.Empty;
string country = string.Empty;
double? latitude = -1.00;
double? longitude = -1.00;
LocationTools.GetLocationFromIP(ipAddress, out city, out region, out country, out latitude, out longitude);
user.IPAddress = ipAddress;
// other code to fill the other fields of User
return user;
}
然后你可以调用它并获得一个可以分配给变量的新用户实例,或者根据需要使用。
答案 3 :(得分:1)
正如Jon指出的那样,你的user
似乎是空的。我认为问题出在调用方法中,而不是GetIPInfo
中。您可能希望为方法添加一些参数检查。此外,我认为这种方法看起来很奇怪,但我可能没有适当的上下文来理解为什么它看起来像。
答案 4 :(得分:0)
System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]
会引发System.NullReferenceException
- “Object reference not set to an
instance of an object.”
- 错误。所以你应该检查语句是否抛出异常。