C# 对象引用未设置为对象的实例,null

C# 对象引用未设置为对象的实例,null,c#,object-reference,C#,Object Reference,我不断收到此错误消息:对象引用未设置为对象的实例。 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;

我不断收到此错误消息:对象引用未设置为对象的实例。

  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;
那么:

user = new User; // Or whatever user is supposed to be

user.IPAddress = ipAddress; // Now you can assign an ip address to this property
那么:

user = new User; // Or whatever user is supposed to be

user.IPAddress = ipAddress; // Now you can assign an ip address to this property

您希望本声明能实现什么目标:

user.IPAddress = user.IPAddress;
我希望它至多是一个no-op。实际上,
user
变量的值似乎为空


目前尚不清楚该方法的作用,但假设
user
为null,则请求未经验证。奇怪的是,
GetXyz
方法有一个
void
返回类型。例如,它应该是
PopulateIPInfo
?在这种情况下,传递一个空引用听起来像是一个bug——但是你真的需要决定这个方法要做什么。。。从长远来看,在该方法中创建一个新的
用户
实例不太可能有用。

您希望该语句实现什么:

user.IPAddress = user.IPAddress;
我希望它至多是一个no-op。实际上,
user
变量的值似乎为空


目前尚不清楚该方法的作用,但假设
user
为null,则请求未经验证。奇怪的是,
GetXyz
方法有一个
void
返回类型。例如,它应该是
PopulateIPInfo
?在这种情况下,传递一个空引用听起来像是一个bug——但是你真的需要决定这个方法要做什么。。。从长远来看,在该方法中创建一个新的
用户
实例不太可能有用。

这取决于调用GetIPInfo(用户)的方式。您似乎是以用户身份传入null。也许你应该写些像这样的东西

GetIPInfo(new User());
但不清楚是否必须以某种方式初始化用户,或者创建一个空实例就足够了。 此外,我不明白您试图对user.IPAddress=user.IPAddress做什么;这是一条似乎根本没有任何效果的指令,除非在IPAddress的setter中有其他代码导致一些附带效果,但这是我要避免的

在评论后编辑:

如果我做对了(但我不是很确定),也许这更像你真正需要的:

私有静态用户GetIPInfo() { 用户=新用户()


然后,您可以调用它并获得一个新的User实例,您可以将其分配给变量或随意使用。

这取决于您调用GetIPInfo(User-User)的方式。您似乎以User的身份传入null。也许您应该编写如下内容

GetIPInfo(new User());
但不清楚是否必须以某种方式初始化用户,或者创建一个空实例就足够了。 此外,我不明白您试图对user.IPAddress=user.IPAddress做什么;这是一条似乎没有任何效果的指令,除非在IPAddress的setter中有其他代码导致一些附带效果,但这是我要避免的

在评论后编辑:

如果我做对了(但我不是很确定),也许这更像你真正需要的:

私有静态用户GetIPInfo() { 用户=新用户()


然后,您可以调用它并获得一个新的User实例,您可以将其分配给一个变量或随意使用。

正如Jon所指出的,您的
User
似乎是空的。我认为问题在于调用方法,而不是
GetIPInfo
中。您可能需要在方法中添加一些参数检查。此外,我认为这种方法od看起来很奇怪,但我可能没有合适的上下文来理解它为什么看起来像这样。

正如Jon所指出的,您的
用户
似乎是空的。我认为问题在于调用方法,而不是
GetIPInfo
中。您可能需要在方法中添加一些参数检查。此外,我认为此方法看起来奇怪,但我可能没有合适的上下文来理解它为什么看起来像这样。

System.Web.HttpContext.Current.Request.ServerVariables[“REMOTE\u ADDR”]
抛出
System.NullReferenceException
“对象引用未设置为

对象的实例。“
-如果请求中未提供IP地址,则出错。因此,您应该检查语句是否引发异常。

System.Web.HttpContext.Current.request.ServerVariables[“REMOTE\u ADDR”]
引发
System.NullReferenceException
“对象引用未设置为

对象的实例。“
-如果请求中未提供IP地址,则会出错。因此,您应该检查语句是否引发异常。

首先,您为自身分配的是无内容的内容。首先,您为自身分配的是无内容的内容。GetIPInfo(user0);我在顶部进一步使用它,我试图为喜欢facebook页面的用户添加ipAddress,然后该页面被添加到数据库中,此时它的值为空。在我尝试将ipAddress等添加到该表的列之前,它正在添加用户信息。GetIPInfo(newUser);这是我应该设置的,所以现在当我调试代码时,它正在捕获IP地址,学生错误,第二双眼睛很有用。谢谢大家:)GetIPInfo(user0);我在顶部进一步使用它,我试图为喜欢facebook页面的用户添加ipAddress,然后该页面被添加到数据库中,此时它的值为空。在我尝试将ipAddress等添加到该表的列之前,它正在添加用户信息。GetIPInfo(newUser);这是我应该设置的,所以现在当我调试代码时,它正在捕获IP地址,学童错误,第二双眼睛很有用。谢谢大家:)“如果请求中没有提供IP地址”?你能解释一下吗