Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将用户输入字符串与表示localhost的任何内容相匹配?_C#_Asp.net - Fatal编程技术网

C# 如何将用户输入字符串与表示localhost的任何内容相匹配?

C# 如何将用户输入字符串与表示localhost的任何内容相匹配?,c#,asp.net,C#,Asp.net,我需要告诉用户是否在文本框中输入了本地机器的名称。这比我原来想的要复杂 string userInput = inputTextbox.Text.ToLower(); string machineName = Environment.MachineName.ToLower(); bool isLocal = userInput.Equals(machineName ) || // This is what we started with... userInput.Eq

我需要告诉用户是否在文本框中输入了本地机器的名称。这比我原来想的要复杂

string userInput = inputTextbox.Text.ToLower();
string machineName = Environment.MachineName.ToLower();

bool isLocal = userInput.Equals(machineName ) || // This is what we started with...
             userInput.Equals(".") ||             // Then we added this...
             userInput.Equals("localhost");       // And then we added this...
正如你所看到的,它变得非常混乱,无法维护。例如,地址127.0.0.1不包括在内。我们的测试部门在每次为home找到新名称时都会不断编写bug。我们需要一劳永逸地解决这个问题


有没有更简单的方法呢?

你可以这样做

List<String> localNames = new List<string>{Environment.MachineName.ToLower(), ".", "localhost"};

bool isLocal = localNames.Any(s=>s.Equals(userInput));
List localNames=new List{Environment.MachineName.ToLower(),“,”localhost“};
bool isLocal=localNames.Any(s=>s.Equals(userInput));
然后您只需要扩展列表,而不是添加其他条件。 虽然不理想,但它使代码的更新更容易。您可以输入代码来查找机器的本地IP,并将其自动添加到字符串列表中


就我个人而言,在所有可能的情况下,我都没有见过任何其他类似的方法。

这台机器有很多定义

  • 所有适配器中的所有IP地址(无线、vpn和dhcp将进一步混乱)
  • 127.x.y.x地址(很好,亚历山大,我不知道)
  • 主机文件中对这些IP地址的任何引用
  • 计算机名
  • 计算机完全限定dns名称
  • 指向该机器的dns记录(对于http主机名标头,我使用多个指向同一机器的dns记录)
  • char(仅在某些情况下有效,如SQL server)
  • 可以转换为上面列出的IP地址的任何长数字。例如,尝试以下操作:
    ping2130706433
  • 这就是我在两分钟内找到的。但这将覆盖你80%的案例。其他%20仍将包含在“禁止”列表中


    顺便说一句,告诉你的测试团队在一次射击中找到尽可能多的。这将减少QA的反弹。

    理论上,您对
    localhost
    的检查可能是错误的。如果调整了hosts文件,则任何内容都可以指向localhost。我不认为有一个简单的解决方案,只有一个最好的努力。你可能想考虑IP版本6too@Liath哈哈。。。这就是我问这个问题的原因。每次他们为家找到一个新名字时,测试都会不断编写bug。我们需要一劳永逸地消除这个bug。我支持@Liath关于使用DNS和解析/检查绑定到本地计算机的IP的说法。我正在System.Net.DNS中搜索,但我还没有找到答案!这是一个很好的改进建议,但不是问题的答案。