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,并将其自动添加到字符串列表中
就我个人而言,在所有可能的情况下,我都没有见过任何其他类似的方法。这台机器有很多定义
char(仅在某些情况下有效,如SQL server)ping2130706433
顺便说一句,告诉你的测试团队在一次射击中找到尽可能多的。这将减少QA的反弹。理论上,您对
localhost
的检查可能是错误的。如果调整了hosts文件,则任何内容都可以指向localhost。我不认为有一个简单的解决方案,只有一个最好的努力。你可能想考虑IP版本6too@Liath哈哈。。。这就是我问这个问题的原因。每次他们为家找到一个新名字时,测试都会不断编写bug。我们需要一劳永逸地消除这个bug。我支持@Liath关于使用DNS和解析/检查绑定到本地计算机的IP的说法。我正在System.Net.DNS中搜索,但我还没有找到答案!这是一个很好的改进建议,但不是问题的答案。