gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:40:20 25 4
gpt4 key购买 nike

我正在处理一个大型 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com