c# - 在 .NET Core 中使用端口调用端点时出现无效 URL 异常

标签 c# .net .net-core

我正在处理一个大型 .NET Core 项目,我们需要从 C# 向特定服务器端点发出 REST 请求。

端点以 http://some.domain.com:70 格式指定。

调用时,将抛出 System.Net.Http.HttpRequestException 类型的异常,并显示消息 The URL is invalid

当调用在地址中省略端口的端点时,它工作正常。 在 .NET Framework 4.6 而不是 .NET Core 中运行时,它也能正常工作。

由于几乎所有可以简化这些传出调用的第 3 方库都依赖于 System.Net.Http,所以问题仍然存在。

下面是一个可以作为控制台应用程序尝试的最小工作示例(在 .NET Core 中抛出异常,在 .NET Framework 4.6 中工作正常)

using System;

    namespace NetCoreConsoleTestREST
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Calling service...");
                Test();
                Console.ReadKey();
            }


            public static async void Test()
            {
                var client = new System.Net.Http.HttpClient();
                var res = await client.GetAsync(new Uri("http://some.domain.com:70")); //This doesn't work in .NET Core
                //var res = await client.GetAsync(new Uri("https://requestb.in/wy9h8gwy")); //This works perfectly fine

                Console.WriteLine(res);
            }
        }
    }

我安装的 .NET Core 版本

Microsoft .NET Core Shared Framework Host

  Version  : 1.1.0
  Build    : 928f77c4bc3f49d892459992fb6e1d5542cb5e86

这是 .NET CoreFX 中的错误还是设计使然?


更新 它只会在我使用端口号 70 时失败。如果我切换到 1234,它就可以工作。

最佳答案

据我所知,这是由使用端口 70 引起的。Windows 上的 .Net Core 上的 HttpClient 使用 WinHTTP。和 What's New in WinHTTP 5.1说(强调我的):

Starting with Windows Server 2003 and Windows XP with SP2, sending requests to the following well-known, non-HTTP, ports is restricted for security reasons: 21 (FTP), 25 (SMTP), 70 (GOPHER), 110 (POP3), 119 (NNTP), 143 (IMAP).

关于c# - 在 .NET Core 中使用端口调用端点时出现无效 URL 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44694831/

相关文章:

C# JSON 反/序列化为接口(interface)或字符串

c# - 如何获取 System.Exception 的内部 "message"值?

c# - 使用 Open XML 插入工作表 - "...unreadable content..."

java - 是否有 .Net 等同于 java.util.concurrent.Executor?

javascript - 显示巨大二维数组的最佳方式

c# - Azure 服务总线消息在运行时在订阅中反序列化为未知类型

c# - 并行代码可扩展性差

docker - Bitbucket管道。无法指定WindowsServerCore Docker镜像

c# - 在 Blazor wasm 中使用 CSharpScript 时出现 System.IO.FileNotFoundException

c# - Blazor 个人帐户失败并显示 "ArgumentException: The path in ' 值'必须以 '/' 开头。 (参数 'value')”