[英]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.