gpt4 book ai didi

.net - System.Runtime.Remoting.Channels.CoreChannel.GetMachineIP() 来自 .NET Reflector - 请解释

转载 作者:行者123 更新时间:2023-12-04 21:25:54 24 4
gpt4 key购买 nike

在 System.Runtime.Remoting.Channels.CoreChannel 上使用 .Net Reflector 我反编译了下面的 2 个方法。 GetMachineIp() 在设置用于远程处理的 HttpChannel 时被调用。

internal static string GetMachineIp()
{
if (s_MachineIp == null)
{
IPHostEntry hostEntry = Dns.GetHostEntry(GetMachineName());
AddressFamily addressFamily = Socket.SupportsIPv4 ?
AddressFamily.InterNetwork : AddressFamily.InterNetworkV6;
IPAddress machineAddress = GetMachineAddress(hostEntry, addressFamily);
if (machineAddress != null)
{
s_MachineIp = machineAddress.ToString();
}
if (s_MachineIp == null)
{
throw new ArgumentNullException("ip");
}
}
return s_MachineIp;

}
internal static string GetMachineName()
{
if (s_MachineName == null)
{
string hostName = GetHostName();
if (hostName != null)
{
IPHostEntry hostEntry = Dns.GetHostEntry(hostName);
if (hostEntry != null)
{
s_MachineName = hostEntry.HostName;
}
}
if (s_MachineName == null)
{
throw new ArgumentNullException("machine");
}
}
return s_MachineName;

}

我的问题是为什么 GetMachineIP() 中的 Dns.GetHostEntry() 会失败并显示 SocketException "No such host is known"。 GetMachineName() 成功返回(它也执行 GetHostEntry)。这仅发生在孤立的机器上。可能与错误的 DNS 注册有关吗?

最佳答案

查看此 MSDN 文档中的注释:

http://msdn.microsoft.com/en-us/library/ms143998.aspx

它说您需要在机器的 DNS 中转发主机/A 条目。另一个条目说这在 4.0 版中发生了变化。所以也许您可以尝试 .NET Framework 4.0,看看它是否能解决您的问题。如果没有,请检查机器的 DNS 注册。

希望有帮助!

关于.net - System.Runtime.Remoting.Channels.CoreChannel.GetMachineIP() 来自 .NET Reflector - 请解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3263257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com