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

Python微信订餐小程序课程视频

https://blog.csdn.net/m0_56069948/article/details/122285951

Python实战量化交易理财系统

https://blog.csdn.net/m0_56069948/article/details/122285941
.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 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

升级现有项目

要将现有的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 中的重大更改的完整列表。

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

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

Services.AddScoped();[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(options =>
{options.DisableImplicitFromServicesParameters = true;
})

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

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

SignalR 集线器方法的依赖注入

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

Services.AddScoped();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);
}

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

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")]() => ...)

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

在此版本中,您现在可以将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]}")

自定义cookie 同意值

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

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

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

在.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 上与我们分享您的反馈。

给予反馈

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

感谢您试用ASP.NET Core!

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

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

相关文章

【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)

注&#xff1a;本文是【ASP.NET Web API系列教程】的一部分&#xff0c;如果您是第一次看本博客文章&#xff0c;请先看前面的内容。 3.3 Calling a Web API From a WPF Application (C#) 3.3 通过WPF应用程序调用Web API(C#) 本文引自&#xff1a;http://www.asp.net/web-api/…

java开发过程中的命名规范

为什么80%的码农都做不了架构师&#xff1f;>>> 最近在读项目的过程中&#xff0c;发现好多同事的代码并不是很规范&#xff0c;有的包名也按照了驼峰的写法&#xff0c;虽说这样不是不行&#xff0c;但个人认为开发过程中应该遵守这些规范&#xff0c;现整理规范如…

git 使用方法自用(勿进)本地开发分支推上线上开发分支

一、//查看状态 1.git status 二、//查看改了哪个文件夹 1.git diff 2.//会出现改了哪个文件夹src/components/partials/Slider.js 三、//查看改了的文件夹里面具体改了啥内容 1.git diff src/components/partials/Slider.js 四、提交所有 1. git add . 五、写备注…

SQLServer 优化SQL语句 in 和not in的替代方案

用IN的SQL性能总是比较低的&#xff0c;从SQL执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别&#xff1a; SQL试图将其转换成多个表的连接&#xff0c;如果转换不成功则先执行IN里面的子查询&#xff0c;再查询外层的表记录&#xff0c;如果转换成功则直接采用多个表的连接…

SVG 和 CSS3 实现一个超酷爱心 Like 按钮

Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https://blog.csdn.net/m0_56069948/article/details/122285941 在现代网页中&#xff0c;我们经常可以在一些文章、视频和图片页面上找到”Like”按…

redis简单学习3-redis常用命令总结

2019独角兽企业重金招聘Python工程师标准>>> 1.键值相关的命令 keys 返回满足给定pattern的所有key 表达式* 代表取出所有的key redis 127.0.0.1:6379> keys * 1) "myzset2" 2) "myzset3" 3) "mylist" 4) "myset2" 5)…

webpack 使用

首先创建一个静态页面 index.html 和一个 JS 入口文件 entry.js&#xff1a; <!-- index.html --> <html> <head> <meta charset"utf-8"> </head> <body> <script src"bundle.js"></script> </body>…

SpringCloud入门简述

Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https://blog.csdn.net/m0_56069948/article/details/122285941 1、微服务简述 ​ 微服务&#xff0c;是一个小型的服务&#xff0c;也是一种设计…

微软的创新还是败笔?Windows 8为苹果创造天赐良机

网络安全公司Avast近日公布的数据显示&#xff1a;Windows系统使用人数正在不断下降。这一结果对微软来说可谓噩梦&#xff0c;于此同时&#xff0c;苹果则不断加强市场占有率。又是什么导致了这样的结果&#xff1f;接下来就看看最主要的几点&#xff1a; 调查覆盖了13.5万Wi…

VMware ubuntu 上网

直接使用桥接模式吧&#xff0c;将虚拟机直接连接到外部网络。同样在Ubuntu里面设置网络ip&#xff0c;见上一篇文章转载于:https://blog.51cto.com/vincent1992/1591102

【转】做好性能测试的6个关注点

一、性能测试提前准备关注点 1、性能测试的环境配置需要能够尽可能的模拟版本的现场使用&#xff0c;包括外网的设备&#xff0c;软件网元&#xff0c;各种硬件平台&#xff0c;操作系统&#xff0c;软件平台&#xff1b; 2、性能测试需要准备合适的模拟脚本来尽可能全真的模拟…

testbench常用任务之SPI slave输出数据

模仿了SPI master从SPI slave读取数据的MiSO数据状态 每8个clk后读取的数据加1 用的一些额外寄存器需要自己声明和初始化 //------------------------------------------------------------------------- //send serial data which is increase by 1 on MiSO line //----------…

大坑!有网,电脑qq登不上去!!

手机qq --> 设置 --> 账号设备安全 --> 允许手机电脑同步在线 或是其他设置干扰导致转载于:https://www.cnblogs.com/supy/p/6762518.html

Vue生产环境调试的方法

Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https://blog.csdn.net/m0_56069948/article/details/122285941 vue 生产环境默认是无法启用vue devtools的&#xff0c;如果生产应用出了问题&…

RavenDB:基于Windows/.NET平台的NoSQL数据库

众所周知&#xff0c;NoSQL运动旨在成为大数据时代传统关系数据库管理系统的替代品。如今Microsoft对开源的态度有所转变&#xff0c;RavenDB就是很好的例子。Microsoft对RavenDB&#xff08;NoSQL数据库&#xff09;的认可令很多人感到惊讶。RavenDB可以轻易的替代关系数据库管…

JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生

一、为什么我们要用连接池技术&#xff1f; 前面的数据库连接的建立及关闭资源的方法有些缺陷。统舱传统数据库访问方式&#xff1a;一次数据库访问对应一个物理连接,每次操作数据库都要打开、关闭该物理连接, 系统性能严重受损。 解决方案&#xff1a;数据库连接池&#xff08…

重温51汇编指令(附实验)

Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https://blog.csdn.net/m0_56069948/article/details/122285941 重温51汇编指令&#xff08;附实验&#xff09; 写在前面&#xff1a; 在电子控制…

第四章 C++数据类型

#include#includeusing std::cout;using std::cin;using namespace std;int main(){ // int a; //布尔 bool check; check0;//初始化为false check true; //字符 char ch; ch0; cout<< ch <<endl; cout<<(int)ch<<endl; for(int i32;i<128;i) { …

HttpClient 学习整理(转)

来自 http://www.blogjava.net/Alpha/archive/2007/01/22/95216.htmlHttpClient 是我最近想研究的东西&#xff0c;以前想过的一些应用没能有很好的实现&#xff0c;发现这个开源项目之后就有点眉目了&#xff0c;令人头痛的cookie问题还是有办法解决滴。在网上整理了一些东西&…

Hyperledger Fabric 通道配置文件和容器环境变量详解

Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https://blog.csdn.net/m0_56069948/article/details/122285941 摘要 Fabric 网络启动的过程中需要进行大量配置&#xff0c;新学时对各个配置的作…