簡體   English   中英

未將對象引用設置為對象的實例,null

[英]Object reference not set to an instance of an object, null

我不斷收到此錯誤消息: 對象引用未設置為對象的實例。

  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.IPAddress = user.IPAddress;

我希望它充其量是沒有行動的。 碰巧的是, user變量的值似乎為空。

目前尚不清楚該方法的目的,但大概是如果user為null,則該請求將未經身份驗證。 GetXyz方法具有void返回類型很奇怪。 例如應該是PopulateIPInfo嗎? 在那種情況下,傳遞一個null引用似乎是一個錯誤-但您確實需要確定該方法的用途... 在該方法內創建一個新的User實例不太可能會有用從長遠來看。

怎么樣:

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

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

這取決於您調用GetIPInfo(User user)的方式 看來您以user身份傳遞null。 也許你應該寫一些像

GetIPInfo(new User());

但是尚不清楚是否必須以某種方式初始化User,或者是否足以創建一個空實例。 此外,我不了解您要使用user.IPAddress = user.IPAddress;做什么 除非在IPAddress的設置器中有其他代碼引起某種附帶影響,否則這條指令似乎根本沒有任何作用,但這是我要避免的事情。

評論后編輯:

如果我做對了(但我不確定),也許這與您真正需要的東西更相似:

私人靜態用戶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;
}

然后,您可以調用它並獲得User的新實例,該實例可以分配給變量或根據需要使用。

正如喬恩指出的那樣,您的user似乎為空。 我認為問題出在調用方法中,而不是在GetIPInfo 您可能想在方法中添加一些參數檢查。 另外,我認為這種方法看起來很奇怪,但是我可能只是沒有適當的上下文來理解它為何看起來如此。

System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]引發System.NullReferenceException“Object reference not set to an instance of an object.” -如果請求中未提供IP地址,則錯誤。 因此,您應該檢查該語句是否引發異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM