TagProvider  [LogProperties]与[LogPropertyIgnore]如果用在DTO不存在任何问题,如果用在Domain实体上,可能有点混乱。 您可能不希望因日志记录问题而使您的域模型变得混乱。对于这种情况,可以使用[TagProvider]属性来丰富日志。 我们仍然使用前面用的Network实体,这次它不再使用[LogPropertyIgnore]属性: publicclassNetWorkInfo { publicstringIPAddress{get;set;} publicintPort{get;set;} }   相反,我们定义了一个...

  OaxsuEwyxUZi   2024年03月19日   56   0   0 .NET

Nuget包 Microsoft.Extensions.Telemetry.Abstractions包含的新的日志记录sourcegenerator,它支持使用[LogProperties]将整个对象作为State与日志一起记录。 我将展示一种方法来控制如何使用[LogProperties]对象自动丰富日志。 示例 您可以使用日志sourcegenerator创建一个如下所示的方法,并使用[LoggerMessage]属性对其进行装饰: publicstaticpartialclassLog { [LoggerMessage( EventId=0, Level=LogLevel.E...

  OaxsuEwyxUZi   2024年03月18日   48   0   0 .NET

您是否曾经访问过一个网站,它需要很长时间加载,最终你敲击F5重新加载页面。 即使用户刷新了浏览器取消了原始请求,而对于服务器来说,API也不会知道它正在计算的值将在结束时被丢弃,刷新五次,服务器将触发5个请求。 为了解决这个问题,ASP.NETCore为Web服务器提供了一种机制,就是CancellationToken. 用户取消请求时,你可以使用HttpContext.RequestAborted访问,您也可以使用依赖注入将其自动注入到您的操作中。   长时间运行的任务请求 现在我们假设您有一个API操作,在向用户发送响应之前可能需要一些时间才能完成。 在处理该操作时,用户可以直接...

  OaxsuEwyxUZi   2024年03月17日   48   0   0 .NET

源生成器是C9中引入的一项功能,允许在编译过程中动态生成代码。 它们直接与C编译器集成(Roslyn)并在编译时运行,分析源代码并根据分析结果生成附加代码。 源生成器提供了一种简化的自动化代码生成方法,无需外部工具或单独的预编译步骤。 通过无缝集成到编译过程中,源生成器可以提高生产力、减少错误并实现更高效的开发工作流程。   如何使用 创建.NET控制台应用程序。此示例使用.NET6。将Program类替换为以下代码。  namespaceConsoleApp; partialclassProgram { staticvoidMain(string[]args) { H...

  OaxsuEwyxUZi   2024年03月16日   57   0   0 .NET

.NET6引入了LoggerMessageAttribute类型。使用时,它会以source-generators的方式生成高性能的日志记录API。 source-generators可在编译代码时,可以提供其他源代码作为编译的输入。 LoggerMessageAttribute依赖于ILogger接口和LoggerMessage.Define功能。 在partial日志记录方法上使用LoggerMessageAttribute时,系统会触发源生成器。触发后,它既可以自动生成其修饰的partial方法的实现,也可以生成包含正确用法提示的编译时诊断。 与现有的日志记录方法相比,编译时日志记录解决...

  OaxsuEwyxUZi   2024年03月15日   49   0   0 .NET

ASP.NETCore中的框架中发出大量诊断事件,包括当前请求进入请求完成事件,HttpClient发出收到与响应,EFCore查询等等。 我们可以利用DiagnosticListener来选择性地监听这些事件,然后通过自己的方式组织这些日志,实现无侵入的分布式跟踪。 下面我们通过DiagnosticSource监听EFCore,与HTTPClient,实现链路追踪。 创建监听 现在我们将配置一个DiagnosticListener来监听全部事件。  首先,我们需要一个IObserver<DiagnosticListener>,我们将使用它来订阅所有事件。 public...

  OaxsuEwyxUZi   2024年03月14日   70   0   0 .NET

由于同一台电脑可以安装多个版本的.NETCoreSDK。 当安装了许多不同版本的.NETCoreSDK之后,要如何才能使用旧版dotnet命令,执行dotnetnew或dotnetbuild之类的命令? 这部分其实并不困难,只要设定global.json即可。 首先要查询目前电脑所有安装过的SDK版本,首先通过 dotnet--list-sdks查看已安装的sdk版本。 C:\Users\CC>dotnet--list-sdks 3.1.426[C:\ProgramFiles\dotnet\sdk] 6.0.419[C:\ProgramFiles\dotnet\sdk] 8....

  OaxsuEwyxUZi   2024年03月12日   159   0   0 .NET

System.Diagnostics.DiagnosticSource可以丰富地记录程序中地日志,包括不可序列化的类型(例如HttpResponseMessage或HttpContext)。 System.Diagnostics.DiagnosticSource通过订阅发布模式运行,我们可以根据自己地需要发现数据源并订阅感兴趣的数据源。   DiagnosticSource与ILogger区别 一般来说,DiagnosticSource主要强类型诊断,它可以记录诸如"Microsoft.AspNetCore.Mvc.ViewNotFound"之类的事件。 而,ILogger用于记录更...

  OaxsuEwyxUZi   2024年03月12日   83   0   0 .NET

.NETFramework和.NETCore2.0及更低版本中由HttpClient使用的默认消息处理程序为HttpClientHandler。 从.NETCore2.1开始,类SocketsHttpHandler提供了更高级别的HTTP网络类(例如HttpClient)使用的实现。使用SocketsHttpHandler提供了许多优点: 与之前的实施相比,性能显着提高。 消除平台依赖性,从而简化部署和服务。例如,libcurl不再依赖于macOS的.NETCore和Linux的.NETCore。 所有.NET平台上的行为一致。 如果不需要进行此更改,并且您使用的是.NE...

  OaxsuEwyxUZi   2024年03月10日   112   0   0 .NET

AI是当今和未来非常重要的技术领域之一,它在各个行业都有广泛的应用,如医疗保健、金融、教育、制造业等。学习AI可以让你了解和掌握未来技术发展的核心,并为未来的职业发展做好准备。现在有很多开源的Model可以让我们使用,使用这些开源Model在低成本下,我们也能完成自己的任务。 现在我的需求是给公众号设计几张HeadImage,然而我并不擅长设计图形。这时候就是AI发挥作用的时候了。我使用StableDiffusionWebUI结合开源模型,给.NET设计几张壁纸。 StableDiffusionWebUI StableDiffusion是2022年发布的深度学习文本到图像生成模型。它主要用于根...

  OaxsuEwyxUZi   2024年01月15日   12   0   0 .NET

什么是Keyedservice Keyedservice是指,为一个需要注入的服务定义一个KeyName,并使用使用KeyName检索依赖项注入(DI)服务的机制。 使用方法 通过调用AddKeyedSingleton(或AddKeyedScoped或AddKeyedTransient)来注册服务,与KeyName相关联。或使用[FromKeyedServices]属性指定密钥来访问已注册的服务。 以下代码演示如何使用Keyedservice: usingMicrosoft.AspNetCore.Mvc; usingMicrosoft.AspNetCore.SignalR; varbuil...

  OaxsuEwyxUZi   2023年12月31日   17   0   0 .NET

什么是主构造函数 把参数添加到class与record的类声明中就是主构造函数。例如 classPerson(stringname) { privatestring_name=name; } 这种写法与以下代码写法一样 classPerson { privatestring_name; publicPerson(stringname) { _name=name; } } 需要注意的是,类的所有其他构造函数都必须通过this()构造函数调用直接或间接调用主构造函数。 classPerson(stringname) { publicPerson(intage,stringname):th...

  OaxsuEwyxUZi   2023年12月31日   15   0   0 .NET

.NET8发布后,Blazor支持四种渲染方式 静态渲染,这种页面只可显示,不提供交互,可用于网页内容展示 使用BlazorServer托管的通过Server交互方式 使用WebAssembly托管的在浏览器端交互方式 使用Auto自动交互方式,最初使用BlazorServer,并在随后访问时使用WebAssembly自动进行交互式客户端呈现。自动呈现通常会提供最快的应用启动体验。   体验 通过VS创建Blazor应用时,选择BlazorWebApp这个新模板。过程中可以看到有四种模板可供选择。我们可以选择Auto来体验。   新建Auto后,可以看到项目模板为我们创建了两个...

  OaxsuEwyxUZi   2023年12月31日   16   0   0 .NET

什么是SSR Blazor中的流式渲染结合了SSR(服务端渲染),服务端将HTML拼好返回给前端,有点像我们熟知的RazorPages或MVC。 当已经有了RazorPages或MVC时,为什么还要选择使用Blazor来实现这一点?这里有几个原因。 首先,RazorPages和MVC没有像Blazor这样提供了很好的可重用组件。 其次,当选择RazorPages或MVC时,我们将被固定在SSR渲染应用程序中。 如果您想添加任何客户端交互性,一种选择是JS另一种选择是Blazor。那么为什么不只使用Blazor来完成所有事情呢?   什么是流式渲染 用户常遇到长耗时的处理,比如查询数...

  OaxsuEwyxUZi   2023年12月31日   20   0   0 .NET

C12中引入了新的语法糖来创建常见的集合。并且可以使用..来解构集合,将其内联到另一个集合中。 支持的类型 数组类型,例如int[]。 System.Span<T>和System.ReadOnlySpan<T>。 支持常见泛型集合,例如System.Collections.Generic.List<T>。 集合表达式使用 以下展示了如何使用集合表达式 staticvoidMain(string[]args) { List<string>names1=["one","two"]; List<string>names2=["three...

  OaxsuEwyxUZi   2023年12月31日   15   0   0 .NET

使用Aspirate可以将Aspire程序部署到Kubernetes集群 工具安装 dotnettoolinstall-gaspirate--prerelease 注意:Aspirate正在开发中,该软件包将作为预览版进行版本控制,--prelease选项将获得最新的预览版。   容器注册中心 您将构建为容器的csproj文件(项目)必须至少包含ContainerRegistry,否则sdk将引发CONTAINERS1013错误。要解决这个问题,您可以根据需要添加它,或使用“init”命令。 init命令允许您引导aspire项目的某些设置。 ContainerRegistry:设...

  OaxsuEwyxUZi   2023年12月31日   23   0   0 .NET

使用Aspirate可以将Aspire程序部署到Kubernetes集群 工具安装 dotnettoolinstall-gaspirate--prerelease 注意:Aspirate正在开发中,该软件包将作为预览版进行版本控制,--prelease选项将获得最新的预览版。   容器注册中心 您将构建为容器的csproj文件(项目)必须至少包含ContainerRegistry,否则sdk将引发CONTAINERS1013错误。要解决这个问题,您可以根据需要添加它,或使用“init”命令。 init命令允许您引导aspire项目的某些设置。 ContainerRegistry:设...

  OaxsuEwyxUZi   2023年12月07日   14   0   0 .NET

C12中引入了新的语法糖来创建常见的集合。并且可以使用..来解构集合,将其内联到另一个集合中。 支持的类型 数组类型,例如int[]。 System.Span<T>和System.ReadOnlySpan<T>。 支持常见泛型集合,例如System.Collections.Generic.List<T>。 集合表达式使用 以下展示了如何使用集合表达式 staticvoidMain(string[]args) { List<string>names1=["one","two"]; List<string>names2=["three...

  OaxsuEwyxUZi   2023年11月21日   15   0   0 .NET

什么是SSR Blazor中的流式渲染结合了SSR(服务端渲染),服务端将HTML拼好返回给前端,有点像我们熟知的RazorPages或MVC。 当已经有了RazorPages或MVC时,为什么还要选择使用Blazor来实现这一点?这里有几个原因。 首先,RazorPages和MVC没有像Blazor这样提供了很好的可重用组件。 其次,当选择RazorPages或MVC时,我们将被固定在SSR渲染应用程序中。 如果您想添加任何客户端交互性,一种选择是JS另一种选择是Blazor。那么为什么不只使用Blazor来完成所有事情呢?   什么是流式渲染 用户常遇到长耗时的处理,比如查询数...

  OaxsuEwyxUZi   2023年11月20日   15   0   0 .NET

.NET8发布后,Blazor支持四种渲染方式 静态渲染,这种页面只可显示,不提供交互,可用于网页内容展示 使用BlazorServer托管的通过Server交互方式 使用WebAssembly托管的在浏览器端交互方式 使用Auto自动交互方式,最初使用BlazorServer,并在随后访问时使用WebAssembly自动进行交互式客户端呈现。自动呈现通常会提供最快的应用启动体验。   体验 通过VS创建Blazor应用时,选择BlazorWebApp这个新模板。过程中可以看到有四种模板可供选择。我们可以选择Auto来体验。   新建Auto后,可以看到项目模板为我们创建了两个...

  OaxsuEwyxUZi   2023年11月19日   24   0   0 .NET
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~