【发布时间】:2018-04-04 16:37:50
【问题描述】:
我正在尝试使用 ReadKey() 获取密码字段,因此它不会在控制台中显示我在 Ubuntu 上运行的 .net 核心应用程序。
这是代码:
while (true)
{
var key = System.Console.ReadKey(true);
if (key.Key == ConsoleKey.Enter)
break;
Io.RootPass += key.KeyChar;
}
但我得到了这个例外:
发生异常:CLR/System.InvalidOperationException System.Console.dll 中发生了“System.InvalidOperationException”类型的未处理异常:“当任一应用程序没有控制台或控制台输入已被重定向时,无法读取密钥。试试 Console.Read。'
ReadLine() 工作正常。为什么 ReadKey() 不起作用?
编辑:
实际上 Console.ReadLine() 不起作用,它只是不会引发异常。回车时没有赋值返回值所以程序卡住了。
我猜这是因为 linux 终端的工作方式不同。 linux终端是否有不同的界面可以工作?
【问题讨论】:
-
@EvanTrimboli 我的代码与您将我链接到的那个人的答案相同
-
我认为问题是因为我在 Ubuntu 终端中运行
-
无论如何,我都无法在 Ubuntu 14.04 下使用 .net-core 2.0.2 重现您的错误,但我使用了相同的代码,除了我对读入键所做的操作。