更新丨.NET 7 预览版2 中的 ASP.NET Core

点击上方蓝字 

关注我们

(本文阅读时间:6分钟)

.NET 7 预览版2 现已推出,其中包括对 ASP.NET Core 的许多重大改进。

以下是此预览版中新增内容的摘要:

• 推断来自服务的 API 控制器操作参数;

• SignalR 集线器方法的依赖注入;

• 为minimal API 提供端点描述和摘要;

• 在最小的 API 中绑定来自标头和查询字符串的数组和 StringValue;

• 自定义 cookie 同意值。

有关为 .NET 7 计划的 ASP.NET Core 工作的更多详细信息,请参阅 GitHub 上的 .NET 7 的完整 ASP.NET Core 路线图。

  • .NET 7 预览版2

    https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-preview-2?ocid=AID3042760

  • 完整 ASP.NET Core 路线图

    https://aka.ms/aspnet/roadmap?ocid=AID3042760

3674a13a79a8d9978b98ca4f5daa71da.png

开始使用 

2ec0445249239d9457ccc77cb38cc53c.png

要开始使用 .NET 7 Preview 2 中的 ASP.NET Core,请安装 .NET 7 SDK。

如果您在 Windows 上使用 Visual Studio,我们建议安装最新的 Visual Studio 2022 预览版。Visual Studio for Mac 对 .NET 7 预览的支持尚不可用,但即将推出。

要安装最新的 .NET WebAssembly 构建工具,请从提升的命令提示符处运行以下命令:dotnet workload install wasm-tools。

  •  .NET 7 SDK:

    https://dotnet.microsoft.com/download/dotnet/7.0?ocid=AID3042760

  • Visual Studio 2022 预览版:

    https://visualstudio.com/preview?ocid=AID3042760

26305463116e3263d02a3a63cc6f93ca.png

升级现有项目

9ca1eee9be4bbb25e796a8ea7b78b173.png

要将现有的 ASP.NET Core 应用从 .NET 7 Preview 1 升级到 .NET 7 Preview 2:

  • 将所有 Microsoft.AspNetCore.* 包引用更新到 7.0.0-preview.2.*。

  • 将所有 Microsoft.Extensions.* 包引用更新到 7.0.0-preview.2.*。

另请参阅 .NET 7 的 ASP.NET Core 中的重大更改的完整列表。

  • 重大更改完整列表

    https://docs.microsoft.com/dotnet/core/compatibility/7.0#aspnet-core?ocid=AID3042760

5817ca88c807d780683fd38acd2bbb79.png

推断来自服务的 API 控制器操作参数

ee23f338a6c1f9debf3fac270632e34d.png

当类型配置为服务时,API 控制器操作的参数绑定现在通过依赖注入绑定参数。这意味着不再需要将 [FromServices] 属性显式应用于参数。

Services.AddScoped<SomeCustomType>();[Route("[controller]")]
[ApiController]
public class MyController : ControllerBase
{// Both actions will bound the SomeCustomType from the DI containerpublic ActionResult GetWithAttribute([FromServices]SomeCustomType service) => Ok();public ActionResult Get(SomeCustomType service) => Ok();
}

您可以通过设置 DisableImplicitFromServicesParameters 来禁用该功能:

Services.Configure<ApiBehaviorOptions>(options =>
{options.DisableImplicitFromServicesParameters = true;
})

ed5ed0f75d522ebe164eb651535726d2.png

SignalR 集线器方法的依赖注入

64ac88d101e03d30609ef38e4bf5c7e2.png

SignalR 集线器方法现在支持通过依赖注入 (DI) 注入服务。

Services.AddScoped<SomeCustomType>();public class MyHub : Hub
{// SomeCustomType comes from DI by default nowpublic Task Method(string text, SomeCustomType type) => Task.CompletedTask;
}

您可以通过设置 DisableImplicitFromServicesParameters 来禁用该功能:

services.AddSignalR(options =>
{options.DisableImplicitFromServicesParameters = true;
});

要显式标记要从配置的服务绑定的参数,请使用 [FromServices] 属性:

public class MyHub : Hub
{public Task Method(string arguments, [FromServices] SomeCustomType type);
}

26720f1adf18fb44e07b243f566cdaa6.png

为Minimal API 提供端点描述和摘要

e1f3e152820f170ba247de69a2c2d546.png

Minimal API 现在支持使用用于 OpenAPI 规范生成的描述和摘要来注释操作。您可以使用扩展方法在Minimal API 应用程序中为路由处理程序设置这些描述和摘要:

app.MapGet("/hello", () => ...).WithDescription("Sends a request to the backend HelloService to process a greeting request.");

或者通过路由处理程序委托上的属性设置描述或摘要:

app.MapGet("/hello", [EndpointSummary("Sends a Hello request to the backend")]() => ...)

a74c8e7220be9419b0b60cf2d192bf1d.png

在Minimal API 中绑定来自标头和查询字符串的数组和 StringValue

0afeb7efb27add43fa51f72c3c0d6363.png

在此版本中,您现在可以将 HTTPS 标头和查询字符串中的值绑定到原始类型数组、字符串数组或 StringValues:

// Bind query string values to a primitive type array
// GET  /tags?q=1&q=2&q=3
app.MapGet("/tags", (int[] q) => $"tag1: {q[0]} , tag2: {q[1]}, tag3: {q[2]}")// Bind to a string array
// GET /tags?names=john&names=jack&names=jane
app.MapGet("/tags", (string[] names) => $"tag1: {names[0]} , tag2: {names[1]}, tag3: {names[2]}")// Bind to StringValues
// GET /tags?names=john&names=jack&names=jane
app.MapGet("/tags", (StringValues names) => $"tag1: {names[0]} , tag2: {names[1]}, tag3: {names[2]}")

您还可以将查询字符串或标头值绑定到复杂类型的数组,只要该类型具有 TryParse 实现,如下例所示。

// Bind query string values to a primitive type array
// GET  /tags?q=1&q=2&q=3
app.MapGet("/tags", (int[] q) => $"tag1: {q[0]} , tag2: {q[1]}, tag3: {q[2]}")// Bind to a string array
// GET /tags?names=john&names=jack&names=jane
app.MapGet("/tags", (string[] names) => $"tag1: {names[0]} , tag2: {names[1]}, tag3: {names[2]}")// Bind to StringValues
// GET /tags?names=john&names=jack&names=jane
app.MapGet("/tags", (StringValues names) => $"tag1: {names[0]} , tag2: {names[1]}, tag3: {names[2]}")

26c64647c5a24bbc9ba8df3d3afe6baa.png

自定义 cookie 同意值

d457928b260840a81fb5fdbe6d9d546f.png

您现在可以使用新的 CookiePolicyOptions.ConsentCookieValue 属性指定用于跟踪用户是否同意 cookie 使用策略的值。

感谢@daviddesmet 贡献了这项改进!

  • @daviddesmet

    https://github.com/daviddesmet

f5483586a1c158bbccb82870cf525a01.png

请求有关 IIS 卷影复制的反馈

a091b5c31b2c445bc23215bfcb555f8a.png

在 .NET 6 中,我们为 IIS 的 ASP.NET Core 模块 (ANCM) 添加了对影子复制应用程序程序集的实验性支持。当 ASP.NET Core 应用程序在 Windows 上运行时,二进制文件被锁定,因此无法修改或替换它们。您可以通过部署应用程序离线文件来停止应用程序,但有时这样做不方便或不可能。卷影复制允许在应用程序运行时通过复制程序集来更新应用程序程序集。 

您可以通过在 web.config 中自定义 ANCM 处理程序设置来启用卷影复制:

<?xml version="1.0" encoding="utf-8"?>
<configuration><system.webServer><handlers><remove name="aspNetCore"/><add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified"/></handlers><aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".logsstdout"><handlerSettings><handlerSetting name="experimentalEnableShadowCopy" value="true" /><handlerSetting name="shadowCopyDirectory" value="../ShadowCopyDirectory/" /></handlerSettings></aspNetCore></system.webServer>
</configuration>

我们正在研究使 IIS 中的卷影复制成为 .NET 7 中 ASP.NET Core 的一项功能,并且我们正在寻求有关该功能是否满足用户要求的更多反馈。如果您将 ASP.NET Core 部署到 IIS,请尝试使用卷影复制并在 GitHub 上与我们分享您的反馈。

  • 应用程序离线文件

    https://docs.microsoft.com/aspnet/core/host-and-deploy/app-offline?ocid=AID3042760

  • 分享反馈

    https://github.com/dotnet/AspNetCore.Docs/issues/23733

1feb0d5903be68cf41dc91accf667ac1.png

总结

ddb517111a92a8b2fe0264f3a481759c.png

我们希望您喜欢 .NET 7 中的 ASP.NET Core 预览版。通过在 GitHub 上提交问题,让我们知道您对这些新改进的看法。

感谢您试用 ASP.NET Core!

提交问题

https://github.com/dotnet/aspnetcore/issues/new

79e74b5d3bab50254a64c5c80ba7c5d9.gif

  获取ASP.NET Core文档新增内容  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LoadRunner+Android模所器实现抓包并调试本地服务端

为了测试Android软件的服务端的功能&#xff0c;需要重现某些客户端操作&#xff0c;便于发现功能问题&#xff0c;性能问题。也方便客户端与本机服务端特别是服务端代码进行断点调试。这个时候需要对网络操作进行重现。loadRunner是hp公司开发的压力测试工具。功能比较强大&am…

架构师

系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的人。具体来说是一个确认和评估系统需求&#xff0c;给出开发规范&#xff0c;搭建系统实现的核心构架&#xff0c;并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”…

统信uos系统考试题_148款!富士通及旗下晟拓品牌系列打印机适配统信UOS

近日&#xff0c;南京富士通电子信息科技股份有限公司(简称&#xff1a;富士通)及其旗下晟拓子品牌148款主流打印机产品与统信桌面操作系统UOS的适配工作即将完成&#xff0c;这次适配涵盖了富士通及晟拓的常用主流机型。富士通正式成为统信软件产品生态合作伙伴。本次适配&…

手机浏览器html5游戏,移动浏览器都爱 HTML5 ?

目前中国第三方手机浏览器市场竞争正在愈演愈烈&#xff0c;但由于各应用开发商对手机浏览器的内容和资源的整合能力、技术研发能力、战略布局目的等方面均各不相同&#xff0c;浏览器产品也出现了同质化严重、内容匮乏等问题&#xff0c;亮点突出、吸引用户的产品较缺乏&#…

怎么快速了解自己的MySQL服务器?

From: http://www.cnblogs.com/benshan/archive/2013/01/09/2853097.html 1、查看数据库服务器状态&#xff1a;status Linux 下的MySQL服务器状态 该列表中主要包括MySQL的版本&#xff08;为version 5.1.61&#xff09;、运行平台&#xff08;debian-linux-gnu(i686)&#xf…

八类网线和七类网线的区别_什么是七类网线?七类网线水晶头如何制作?

要了解七类网线如何使用&#xff1f;需要掌握这四个问题&#xff1a;1、什么是七类网线&#xff1f;2、七类网线与六类网线有什么区别&#xff1f;3、七类网线用什么水晶头&#xff1f;如何制作7类网线水晶头&#xff1f;4、7类网线的应用场景&#xff1f;带着这四个问题&#…

poj2632 累死了

题意&#xff1a; 给定A*B的格子&#xff0c;放入N个机器人&#xff0c;每个机器人初始位置及朝向给定。给定M条指令。指令类型有三种&#xff1a; 1、L&#xff1a;左转90 2、R&#xff1a;右转90 3、F&#xff1a;前进一格 问执行指令过程中机器人是否发生碰撞&am…

代码生成器原理

整个架设思路分的4个部分&#xff1a;A&#xff1a;底层物理数据库层&#xff0c;主要是存储数据用的。B&#xff1a;数据库访问层&#xff0c;主要是为了写一套代码可以跑在多种数据库上。C&#xff1a;一些辅助工具、基础组件&#xff0c;是为了加强自动产生代码的功能、简化…

【Blog.Core开源】将Program升级为.NET6.0版本

大家假期好&#xff0c;好久不见&#xff0c;之前忙于其他事情&#xff0c;公众号暂时搁置了一个月了&#xff0c;新的一年开始了&#xff0c;很多小伙伴开始催更了&#xff0c;粉丝的要求必须满足。2022年打算重点推广BCVP社区&#xff0c;所以还是希望有愿意投稿的小伙伴&…

python画两条曲线_查找在matplotlib中绘制的两条曲线之间的区域(在区域之间填充)...

我有两条曲线的x和y值列表&#xff0c;它们都有奇怪的形状&#xff0c;而且我没有任何函数。我需要做两件事&#xff1a;&#xff08;1&#xff09;绘制它并对曲线之间的区域进行着色&#xff0c;如下图所示&#xff1b;&#xff08;2&#xff09;找到曲线之间该着色区域的总面…

OXY OPENCART 商城自适应主题模板 ABC-0020-05

OXY OPENCART 商城自适应主题模板 ABC-0020-05OXY FEATURESLayoutFoundation Framework – the most advanced responsive front-end framework in the world.100% Fully Responsive – Solid Flexible Responsive Layout that scales from 320px to 1440px.You can disable re…

年月跨度_建筑结构丨国内跨度最大的张弦桁架工程——合肥滨湖国际会展中心二期首榀桁架滑移成功...

来源&#xff1a;中建科工 华中大区。2020年12月8日全国公建领域最大跨度的张弦桁架钢结构工程合肥滨湖国际会展中心二期首榀桁架滑移顺利完成合肥滨湖国际会展中心二期项目位于合肥市滨湖新区锦绣大道与广西路交口&#xff0c;该项目2#综合馆建筑面积约4.8万平方米&#xff0c…

【C#/.NET】不用AutoMapper,我用啥呢?

微信公众号&#xff1a;趣编程ACE关注可了解更多的.NET日常实战开发技巧。如需源码请后台留言源码;**[如果觉得对您有帮助&#xff0c;欢迎关注]TinyMapper简介本文来自社区群粉丝投稿TinyMapper是一个.NET平台下的一个轻量级对象映射工具&#xff0c;号称是.Net平台下最快的对…

HBase键值分片的简单运用

1.基本原理介绍 HBase的存储是通过行键建立索引进行存储的&#xff0c;而且HBase只支持一级索引&#xff0c;因此只要通过行键才能很快的找到需要的数据。HBase是一个分布式的系统&#xff0c;HBase通过行键的分片&#xff0c;把不同的数据存储在不同的主机上。1).顺序分片依据…

我要3万取款机怎么取_7万的新宝骏RS-3怎么样?用车三个月后,车主说出了实话...

小型SUV领域&#xff0c;作为目前SUV市场之中竞争最激烈的细分领域之一&#xff0c;已经成为众多车企的必争之地。而正因如此&#xff0c;小型SUV市场所具有的车型非常的丰富&#xff0c;且其中更是一点也不缺爆款车型&#xff0c;正如在去年底刚上市的一款小型SUV——新宝骏RS…

MODIS数据说明

MODIS目前主要存在于两颗卫星上&#xff1a;TERRA和AQUA。TERRA卫星每日地方时上午10:30时过境&#xff0c;因此也把它称作地球观测第一颗上午星(EOS-AM1)。AQUA每日地方时下午过境&#xff0c;因此称作地球观测第一颗下午星(EOS-PM1)。两颗星相互配合&#xff0c;每1-2天可重复…

.NET 为大型应用接入 ApplicationStartupManager 启动流程框架

对于大型的应用软件&#xff0c;特别是客户端应用软件&#xff0c;应用启动过程中&#xff0c;需要执行大量的逻辑&#xff0c;包括各个模块的初始化和注册等等逻辑。大型应用软件的启动过程都是非常复杂的&#xff0c;而客户端应用软件是对应用的启动性能有所要求的&#xff0…

思科为其核心网络业务增加了订阅服务

据国外媒体报道&#xff0c;思科系统公司的核心网络业务于周二开始进军订阅服务市场&#xff0c;其向大型企业宣布了一系列新的安全和自动化工具。 这个新的“直观网络”代表了思科如何从其旗舰业务中获得收入的重大变化。San Jose公司一直依赖于网络设备的销售&#xff0c;这些…

if函数python_pythonif函数

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01; python的内置的函数round() a 1.12586 #保留小数的函数,四舍五入&#xff0c;参数为保留小数点后的位数 pr…

Foundatio - .Net Core用于构建分布式应用程序的可插拔基础块

简介Foundatio - 用于构建分布式应用程序的可插拔基础块•想要针对抽象接口进行构建&#xff0c;以便我们可以轻松更改实现。希望这些块对依赖注入友好。•缓存&#xff1a;我们最初使用的是开源 Redis 缓存客户端&#xff0c;但后来它变成了具有高许可成本的商业产品。不仅如此…