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地址”?你能解释一下吗