dotnet-echo 1.2.0
dotnet tool install --global dotnet-echo --version 1.2.0
此包包含一个您可以从shell/命令行调用的.NET 工具。
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local dotnet-echo --version 1.2.0
此包包含一个您可以从shell/命令行调用的.NET 工具。
#tool dotnet:?package=dotnet-echo&version=1.2.0
NuGet 团队不提供对此客户端的支持。请联系其维护者以获取支持。
nuke :add-package dotnet-echo --version 1.2.0
NuGet 团队不提供对此客户端的支持。请联系其维护者以获取支持。
dotnet-echo
安装或更新(可以使用相同命令进行两项操作)
dotnet tool update -g dotnet-echo
用法
> dotnet echo -?
echo
A trivial program that echoes whatever is sent to it via HTTP or gRPC
Usage:
echo [options] [<port>...]
Arguments:
<port> Port(s) to listen on. [default: 80 or 443 with --ssl] [default: ]
Options:
-ssl Use HTTPS with self-signed SSL certificate, persisted as dotnet-echo.pfx in the current directory.
-http2 Use HTTP/2 only. Prevents additional port for HTTP/2 to support gRPC.
--version Show version information
-?, -h, --help Show help and usage information
程序将自动每天检查一次更新,并在有新版本可用时推荐更新。
此服务还支持 gRPC,使用 echo.proto
syntax = "proto3";
service chamber {
rpc echo (message) returns (message);
}
message message {
string payload = 1;
}
由于 gRPC 需要使用 HTTP/2,dotnet-echo
将使用指定的 端口
(s)+ 1 来监听仅 HTTP/2 传输(例如,如果您指定 8080
,gRPC 端点将可在 https://127.0.0.1:8081
上使用)。您可以使用 –http2
选项强制仅使用 HTTP/2 以避免额外的端口。
在 chamber
服务中运行 echo
的 .NET 客户端示例
<Project>
...
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="*" />
<PackageReference Include="Grpc.Net.Client" Version="*" />
<PackageReference Include="Grpc.Tools" Version="*" />
</ItemGroup>
<ItemGroup>
<Protobuf Include="echo.proto" GrpcServices="Client" />
</ItemGroup>
</Project>
var channel = GrpcChannel.ForAddress("https://127.0.0.1:8081");
var service = new chamber.chamberClient(channel);
var response = await service.echoAsync(new message { Payload = "Hello World" }, cancellationToken: cancellation);
Console.WriteLine(response.Payload);
仅使用 HTTP/2 模式运行普通 HTTP POST 的 .NET 客户端示例
var http = new HttpClient();
var send = await http.SendAsync(new HttpRequestMessage(
HttpMethod.Post,
"https://127.0.0.1:8081")
{
Content = new StringContent("Hello HTTP"),
Version = new Version(2, 0),
VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher,
});
或者,您可以使用简单的委托 HTTP 处理器强制所有 HTTP 请求都带有所需的 2.0 版本属性,例如
class Http2Handler : DelegatingHandler
{
public Http2Handler() : this(new HttpClientHandler()) { }
public Http2Handler(HttpMessageHandler inner) : base(inner) { }
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
request.Version = new Version(2, 0);
request.VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher;
return base.SendAsync(request, cancellationToken);
}
}
它的可以这样使用
var http = new HttpClient(new Http2Handler());
var post = await http.PostAsync("https://127.0.0.1:8081", new StringContent("Hello HTTP"));
因为处理程序自动设置相关消息属性,我们可以使用更简单的 Delete/Get/Post/Put
方法。
执行过程中的输出示例
在 Ubuntu 上运行
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 支持兼容。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp3.1 支持兼容。 |
本包没有依赖项。