我正在.NET Core 应用程序中注入类型化 HTTP 客户端。我也在使用 Serilog 进行日志记录。我没有特意配置任何 HTTP 活动日志记录。它神奇地随之而来。我该如何关闭此功能?
[12:00:52 INF] Start processing HTTP request POST https://foo/bar
[12:00:52 INF] Sending HTTP request POST https://foo/bar
[12:00:53 INF] Received HTTP response after 707.8906ms - OK
Run Code Online (Sandbox Code Playgroud)
我的 HTTP 客户端配置:
services.AddHttpClient("FOO")
.ConfigureHttpClient(client =>
{
client.BaseAddress = new Uri("https://foo/");
})
.ConfigurePrimaryHttpMessageHandler(sp => new HttpClientHandler()
{
Credentials = new NetworkCredential("user", "pass"),
ServerCertificateCustomValidationCallback = (senderC, cert, chain, sslPolicyErrors) => true
})
.AddTypedClient<Thing1>()
.AddTypedClient<Thing2>();
Run Code Online (Sandbox Code Playgroud) 如您所料,此代码会产生编译器错误:
public static IEnumerable<int> Foo()
{
}
Run Code Online (Sandbox Code Playgroud)
并非所有代码路径都返回值
但是,此编译仅带有有关无法访问代码的警告:
public static IEnumerable<int> Foo()
{
if(false)
{
yield return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
这产生一个空的可枚举。为什么这样做有效,并且它是定义的行为?
是否有可能创建一个struct从Memory<byte>没有复制到一个数组中?或者更好的是,创建struct和Memory<byte>共享相同的管理内存?
从字节数组读取C#中的C / C ++数据结构非常接近,但不太适用。Memory<T>有一个Pin方法,但返回MemoryHandle而不是GCHandle。
XY:我正在Memory<byte>从套接字读取和写入,使用BinaryPrimitives从切片获得的跨度来获取和设置各个字段。将Memorya struct表示为更好。