C# 在Windows服务中获取计算机名?
在.NET Windows服务(C#)中,如何获取计算机名 这是一种可靠的方法,还是我应该用try/catch来包装它?看看下面的例子。里面有很多好东西,包括:C# 在Windows服务中获取计算机名?,c#,.net,windows-services,C#,.net,Windows Services,在.NET Windows服务(C#)中,如何获取计算机名 这是一种可靠的方法,还是我应该用try/catch来包装它?看看下面的例子。里面有很多好东西,包括: 根据文档,这可能会产生InvalidOperationException,因此您需要了解这种可能性。不过,这种风险可能不足以让你用try/catch来包装它。我认为首先你必须确定“计算机名”是什么意思 正如其他人所说,在windows上可能是“传统的”,您将使用该属性获取计算机的名称,实际上是计算机的NetBIOS名称。另一个选项是机器
根据文档,这可能会产生InvalidOperationException,因此您需要了解这种可能性。不过,这种风险可能不足以让你用try/catch来包装它。我认为首先你必须确定“计算机名”是什么意思 正如其他人所说,在windows上可能是“传统的”,您将使用该属性获取计算机的名称,实际上是计算机的NetBIOS名称。另一个选项是机器的(完全限定的)DNS名称。但是,请注意,一台计算机实际上可能有多个适配器/IP地址/任何内容,因此可能有多个DNS名称 考虑到对的潜在
InvalidOperationException
的处理,我建议考虑一下如果遇到它,您实际会做什么。如果你能做些什么,你可以,当然也应该抓住它
例如,在我的一些代码中,我需要获取计算机名(顺便说一句,也是在服务中),但我仅将其用于诊断目的。如果失败,我只需在诊断输出中使用一些(未知)
字符串(并记录一次错误)
如果结果对您的进一步处理至关重要,您可能还应该捕获异常,将事件写入windows事件日志并“死亡”。我们在字段中看到了零星的故障,因此如果您的代码路径是关键的,您应该捕获IOE。可能重复的
string CurrentMachineName = Environment.MachineName;