我只是想调试以下异常:
Exception has been thrown by the target of an invocation.: System.Reflection.TargetInvocationException:
Exception has been thrown by the target of an invocation. --->
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: newAddress
at System.Net.IPAddress..ctor(Int64 newAddress)
这是有问题的代码:
int hostToNetworkOrder = IPAddress.HostToNetworkOrder( (int)computer.IpAddress );
IPAddress ipAddress = new IPAddress( hostToNetworkOrder );
computer.IpAddress
设置为1582281193
。这将转换为hostToNetworkOrder
,即-374255778
。
现在,如果我尝试new IPAddress( -374255778 );
在 Visual Studio 的即时窗口中构建,我会得到一个包含正确 IP 地址的 IPAddress 对象。
但是如果我越过代码中的那一行,它总是会抛出一个 ArgumentOutOfRangeException。为什么?
更新
我知道我的意见是负面的,很可能是这个问题的根源。这就是我解决它的方法:
UInt32 hostToNetworkOrder = (UInt32)IPAddress.HostToNetworkOrder( (Int32)computer.IpAddress );
IPAddress ipAddress = new IPAddress( hostToNetworkOrder );
我仍然不明白为什么它在立即窗口中起作用。