NotSupportedException控制台应用程序中的“无法识别Uri前缀”

时间:2019-07-02 17:39:00

标签: c# uri

我试图通过使用网络框架控制台应用程序从真实类型文件(ttf)中读取指标。

“不幸的是”以下代码有效:

private static void Main(string[] args)
{                      
    if (!UriParser.IsKnownScheme("pack"))
    {
        var parser = new GenericUriParser(GenericUriParserOptions.GenericAuthority);
        UriParser.Register(parser, "pack", -1);
    }

    var fontUri = new Uri("pack://application:,,,/TestConsole;component/cmmi10.ttf");

    Console.WriteLine(fontUri.Scheme);
    Console.ReadKey(); 

    var glyph = new GlyphTypeface(fontUri);

    Console.WriteLine(glyph.FontUri.ToString());

    Console.ReadKey(); 
}

不幸的是,由于我在注释第一个Console.ReadKey();时遇到了麻烦,因此我收到了一个 NotSupportedException 消息,消息为“无法识别Uri前缀”。

我在寻找此NotSupportedException的解决方案时偶然发现了此行为。因此,我尝试在控制台中显示几个Uri属性,以了解其中哪一部分是错误的。原来是“打包”方案,它显然是wpf特定的,必须在控制台应用程序中显式注册。

尽管在这个例外情况上有几个类似的问题,但我没有找到可以将Console.ReadKey()方法连接到未找到的uri前缀的解释。

我跟踪了源代码中抛出此异常的位置:

[https://referencesource.microsoft.com/System/net/System/Net/WebRequest.cs.html#4a9454016805ca53][1]-第203行

显然,这是验证“打包”方案前缀的方法。但这不是问题,因为该方案已经注册。这与注释过的Console.ReadKey()有什么关系?

0 个答案:

没有答案