Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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# 在Windows服务中获取计算机名?_C#_.net_Windows Services - Fatal编程技术网

C# 在Windows服务中获取计算机名?

C# 在Windows服务中获取计算机名?,c#,.net,windows-services,C#,.net,Windows Services,在.NET Windows服务(C#)中,如何获取计算机名 这是一种可靠的方法,还是我应该用try/catch来包装它?看看下面的例子。里面有很多好东西,包括: 根据文档,这可能会产生InvalidOperationException,因此您需要了解这种可能性。不过,这种风险可能不足以让你用try/catch来包装它。我认为首先你必须确定“计算机名”是什么意思 正如其他人所说,在windows上可能是“传统的”,您将使用该属性获取计算机的名称,实际上是计算机的NetBIOS名称。另一个选项是机器

在.NET Windows服务(C#)中,如何获取计算机名

这是一种可靠的方法,还是我应该用try/catch来包装它?

看看下面的例子。里面有很多好东西,包括:


根据文档,这可能会产生InvalidOperationException,因此您需要了解这种可能性。不过,这种风险可能不足以让你用try/catch来包装它。

我认为首先你必须确定“计算机名”是什么意思

正如其他人所说,在windows上可能是“传统的”,您将使用该属性获取计算机的名称,实际上是计算机的NetBIOS名称。另一个选项是机器的(完全限定的)DNS名称。但是,请注意,一台计算机实际上可能有多个适配器/IP地址/任何内容,因此可能有多个DNS名称

考虑到对的潜在
InvalidOperationException
的处理,我建议考虑一下如果遇到它,您实际会做什么。如果你能做些什么,你可以,当然也应该抓住它

例如,在我的一些代码中,我需要获取计算机名(顺便说一句,也是在服务中),但我仅将其用于诊断目的。如果失败,我只需在诊断输出中使用一些
(未知)
字符串(并记录一次错误)


如果结果对您的进一步处理至关重要,您可能还应该捕获异常,将事件写入windows事件日志并“死亡”。

我们在字段中看到了零星的故障,因此如果您的代码路径是关键的,您应该捕获IOE。可能重复的
string CurrentMachineName = Environment.MachineName;