首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET CoreAction返回值类型

Asp.net Core之前所有的Action返回值都是ActionResult,Json(),File()等方法返回都是ActionResult子类。...基本沿用了之前Asp.net MVC那套东西,使用它大部分情况都没问题。比如用它来返回视图,返回json,返回文件等等。如果是异步则使用Task。...Asp.net Core框架帮我们自动序列化返回给前端,默认使用json序列化。同样异步的话使用Task包起来做为返回值。...如果repository.Get方法没有根据id查找到数据,那么将会返回null。如果null做为Action返回值,最后框架转换为204http status code。 ?...因为返回值类型不一致。方法签名返回值是Person,但是方法内部一返回NotFoundResult,一返回Person。 ? 解决这个问题就该ActionResult出场了。

2.7K10

【5min+】美化API,包装AspNetCore返回结果

那么我们到底该使用怎样返回类型呢?Controller里面都有OK()、NotFound()、Redirect()等方法,这些方法作用是什么呢? 这些问题都将在下面的内容得到答案。...小丁(前端人员): 那现在是什么情况,返回是200,但是我又没有办法处理这个对象,导致界面显示了奇奇怪怪东西。...//我们例子返回是string,显然进行转换 var result = (returnValue as IActionResult) ??...: ObjectResult { } 所以当使用OK()时候,本质上还是返回了ObjectResult,这就是为什么当我们使用IActionResult作为Action返回类型和使用一般类型(比如...所以很难把控到底应该将结果序列化成什么格式。 有时候需要把MVC已经序列化好数据再次反序列化操作,有不必要开销。

1.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

.NET Core 使用MediatR CQRS模式

CQRS模式通过使用不同接口来分离读取数据和更新数据操作。CQRS模式可以最大化性能,扩展性以及安全性, 还会为系统持续演化提供更多弹性,防止Update命令域模型Level发生冲突。...通常情况我们使用同一数据模型进行我们数据查询和修改,这是一个非常简单CURD,一些复杂应用程序,这种方法会变难以操作,例如在读取方面应用程序可能会存在大量查询, 返回具有不同数据传输对象...(DTO),对象映射可能非常复杂,写入方面,模型可能实施复杂验证和业务逻辑.结果导致模型太多操作,整体变相当得复杂....如下图所示: [af3e85fb-21cb-4de7-884f-027c613e2ac9.png] MediatR他为我们解决将消息发送与消息处理进行了解耦,他同时支持异步和同步来发送和监听消息....requestModel) { var response =await _mediator.Send(requestModel); return Ok

48740

.NET Core 使用MediatR CQRS模式

CQRS模式通过使用不同接口来分离读取数据和更新数据操作。CQRS模式可以最大化性能,扩展性以及安全性, 还会为系统持续演化提供更多弹性,防止Update命令域模型Level发生冲突。...通常情况我们使用同一数据模型进行我们数据查询和修改,这是一个非常简单CURD,一些复杂应用程序,这种方法会变难以操作,例如在读取方面应用程序可能会存在大量查询, 返回具有不同数据传输对象...(DTO),对象映射可能非常复杂,写入方面,模型可能实施复杂验证和业务逻辑.结果导致模型太多操作,整体变相当得复杂....MediatR他为我们解决将消息发送与消息处理进行了解耦,他同时支持异步和同步来发送和监听消息....requestModel) { var response =await _mediator.Send(requestModel); return Ok

1.6K10

C#异步使用要点(翻译)

异步操作时需要注意要点 1.使用异步方法返回值应当避免使用void 使用异步方法中最好不要使用void当做返回值,无返回值也应使用Task作为返回值,因为使用void作为返回值具有以下缺点 无法得知异步函数状态机什么时候执行完毕...,恢复等待该操作代码 虽然看起来并没有什么关系,但是其实这里却是使用了两个线程来完成同步操作,这样通常会导致线程饥饿和死锁 线程饥饿(starvation):指等待时间已经影响到进程运行,如果等待时间过长...由于.NET取消操作必须显示传递CancellationToken,所以如果想取消所有调用异步函数,那么应该将CancllationToken传递给此调用链所有函数 下面例子调用ReadAsync...+ 1); } 使用async/await来代替返回Task时,还有性能上考虑,虽然直接Task更快,但是最终却改变了异步行为,失去了异步状态机一些好处 使用场景 1....,从而生成异步结果值,但是这样很容易导致线程池饥饿 下面这个例子就有可能导致线程池饥饿,因为当如果没有缓存人员数据时,将阻塞请求线程 public class PersonController : Controller

3.3K50

使用异步操作注意要点(翻译)

异步操作时需要注意要点 1.使用异步方法返回值应当避免使用void 使用异步方法中最好不要使用void当做返回值,无返回值也应使用Task作为返回值,因为使用void作为返回值具有以下缺点 无法得知异步函数状态机什么时候执行完毕...线程池内线程增加导致执行时大量进行上下文切换,从而浪费程序整体性能, 线程池详细信息请参考CLR第27章 ?...,恢复等待该操作代码 虽然看起来并没有什么关系,但是其实这里却是使用了两个线程来完成同步操作,这样通常会导致线程饥饿和死锁 ?...由于.NET取消操作必须显示传递CancellationToken,所以如果想取消所有调用异步函数,那么应该将CancllationToken传递给此调用链所有函数 ❌下面例子调用ReadAsync...使用async/await来代替返回Task时,还有性能上考虑,虽然直接Task更快,但是最终却改变了异步行为,失去了异步状态机一些好处 使用场景 1.

4.6K20

从头编写 asp.net core 2.0 web api 基础框架 (1)

但是目前, 所有的http请求都会导致返回"Hello World!"....后边调用app.UseMvc(), 所以处理异常middleware可以把request交给mvc之间就处理异常, 更总要是它还可以捕获并处理返回MVC相关代码执行异常....我们把获取数据代码整理成一个ProductService, 然后保证程序运行时候, 操作是同一批数据: namespace CoreBackend.Api.Services { public...因为框架找到了匹配uriaction, 所以不会返回404, 但是我们如果找不到数据的话, 应该返回404错误才比较好....因为web api不一定返回都是json类型数据, 也不一定只返回一堆json(可能还要包含其他内容). 所以JsonResult并不合适作为Action返回结果.

2K70

【ASP.NET Core 基础知识】--前端开发--使用ASP.NET Core和JavaScript进行通信

当页面加载时,JavaScript代码向后端发送一个GET请求,并将返回数据显示页面上。...XHR对象允许异步地从服务器获取数据,而不必刷新整个页面。 事件处理:AJAX通常通过事件处理来处理异步操作。...回调函数:AJAX操作完成后,通常会调用一个回调函数来处理从服务器返回数据。这使得我们可以根据需要更新页面的内容,例如更新DOM元素或执行其他操作。...2.2 ASP.NET Core中使用AJAX进行后端通信 ASP.NET Core中使用AJAX进行后端通信是一种常见做法,可以实现异步数据传输和动态页面更新。...以下是对RESTful API概述: 资源 RESTful API,所有的数据都被视为资源,并由URL来表示。每个资源都有一个唯一URL地址,并且可以通过HTTP方法对其进行操作

4300

.NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

模型绑定 什么是模型绑定 来源有哪些 复杂数据绑定 ASP.NET Core 模型绑定:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models...模型绑定系统: 从各种源(如路由数据、表单域和查询字符串)检索数据。 Razor方法参数和公共属性向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型属性。...[Remote]:通过服务器上调用操作方法来验证客户端上输入。...返回数据类型 格式化响应数据 返回数据类型 ASP.NET Core Web API 控制器操作返回类型:https://docs.microsoft.com/zh-cn/aspnet/core/...view=aspnetcore-5.0 特定类型 IActionResult ActionResult 特定类型:最简单操作返回基元或复杂数据类型(如 string 或自定义对象类型) IActionResult

2.4K10

.NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

view=aspnetcore-5.0 什么是模型绑定 控制器和 Razor 页面处理来自 HTTP 请求数据。 例如,路由数据可以提供一个记录键,而发布表单域可以为模型属性提供一个值。...模型绑定系统: 从各种源(如路由数据、表单域和查询字符串)检索数据。 Razor方法参数和公共属性向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型属性。...[Remote]:通过服务器上调用操作方法来验证客户端上输入。...返回数据类型 格式化响应数据 返回数据类型 ASP.NET Core Web API 控制器操作返回类型:https://docs.microsoft.com/zh-cn/aspnet/core/...view=aspnetcore-5.0 特定类型 IActionResult ActionResult 特定类型:最简单操作返回基元或复杂数据类型(如 string 或自定义对象类型) IActionResult

2.5K11

Action多种数据返回格式处理机制

上一章讲了系统如何将客户端提交请求数据格式化处理成我们想要格式并绑定到对应参数,本章讲一下它“逆过程”,如何将请求结果按照客户端想要格式返回去。...(ASP.NET Core 系列目录) 一、常见返回类型 以系统模板默认生成Home/Index这个Action来说,为什么当请求它时候回返回一个Html页面呢?...它要求这个Action不是异步并且返回结果类型是派生自IActionResult。...图 2被两行虚线分隔为三行,第一行基本都介绍过了,第二行是第一行对应异步方法,上一节介绍常见返回时候说过,这些异步方法返回结果和对应同步方法是一样。...但是从第一节例子可知,string类型返回string类型字符串,而Book这样实体类型却会返回JSON。

1.5K30

ASP.NET Core 使用 Google 验证码(reCAPTCHA v3)代替传统验证码

写在前面 友情提示: Google reCAPTCHA(v3下同) 使用不需要“梯子”,但申请账号时候需要! Google reCAPTCHA 使用不需要“梯子”,但申请账号时候需要!...Google reCAPTCHA 使用不需要“梯子”,但申请账号时候需要!...://developers.google.com/recaptcha/docs/v3 英文好自己看看; 一句带过:reCAPTCHA 以嵌入js方式,给网站后台返回一个分数,这个分数是用于判断用户是否是机器人...,得到: 这两个kes是配置用,作用页面也说清楚了; 很简单,ok,接下来看看怎么.net core站点中使用; 继承入Asp.net Core 1、创建项目 2、引用程序包 install-package...以后做有人机验证需求登录页面,多了个选择,后面多玩下,自己试着用爬虫摸一下这个页面什么,可靠的话我就投入生产了; 本文示例代码(也没写什么新内容,大部分是看晓晨大佬那篇博客自己实现了一遍) 参考

2K10

异步线程无法使用IServiceProvider?

Action方法Index,我们调用Task静态方法Run异步执行了一些操作。...具体来说,异步执行操作,我们利用调用上面注入这个IServiceProvider对象GetRequiredService方法试图获取一个IFoobar服务实例。...由于这段操作一个Try/Catch执行,抛出异常消息堆栈信息直接输出到控制台上。...对于我们演示实例来说,注入到HomeController构造函数IServiceProvider是RequestServices,由于针对RequestServices使用是另一个后台线程执行...ASP.NET Core 3采用了基于IHost/IHostBuilder承载方式,表示宿主IHost接口具有如下所示Services属性,它返回正式我们所需ApplicationServices

1K40

C#中使用 CancellationToken 处理异步任务

.NET Core 中使用异步编程已经很普遍了, 你项目中随处可见 async 和 await,它简化了异步操作,允许开发人员,使用同步方式编写异步代码,你会发现在大部分异步方法,都提供了CancellationToken...参数,本文主要介绍下 CancellationTokenSource 和 CancellationToken异步任务使用。...("Executed"); return Ok(); } 启动项目后,我们浏览器页面上访问接口,第一次访问接口等待响应时,我刷新一次了页面,现在程序输出信息如下: ?...,同样,第一次还未返回是,我们刷新一次页面,程序输出如下: ?...只有一次输出,第一次请求抛出了一次 TaskCanceledException 异常,没有继续执行后边逻辑,当然你可以捕获这个异常,返回更友好提示!

1.7K10

ASP.NET Core 错误处理(Handle Errors)

可以看到,当程序运行在开发环境时,才会启用开发人员异常页,这很好理解,因为在生产环境,我们不能将异常详细信息暴露给用户,否则,这将会导致一系列安全问题。...其实,前面我们已经提到了,IDeveloperPageExceptionFilter所有实现,组成一个管道,当错误需要在管道后续处理器作进一步处理时,就是通过这个next传递错误,所以,当需要传递错误时...异常处理程序页 除了使用lambda外,我们还可以指定一个路径,指向一个备用管道进行异常处理,这个备用管道对于MVC来说,一般是ControllerAction,例如MVC模板默认/Home/Error...HttpContext.TraceIdentifier }); } } 当捕获到异常时,你会看到类似如下页面: 你可以ActionError自定义错误处理逻辑,就像lambda一样。...我们应用,可以同时使用错误处理中间件和异常过滤器,只有充分发挥它们各自优势,才能处理好程序错误。

2K20

深入 C++ 回调

许多面试官问:你知道回调吗?你写回调时候遇到哪些坑?你知道对象生命周期管理吗?为什么这里崩溃,那里泄漏? 设计 C++ 回调时,你是否想过:同步还是异步?回调时(弱引用)上下文是否失效?...纤程 (fiber) 等概念,一般采用回调处理 I/O 完成返回结果(参考:从时空维度看 I/O 模型) 从语言上看,回调是一个调用函数过程,涉及两个角色:计算和数据。...)上下文) 闭包 拥有 上下文,能保证回调执行时 上下文一直有效 如果使用后忘记释放,可能导致 泄漏 如果你已经熟悉了 std::bind/lambda + std::function,那么你设计...:total,局部变量上下文(弱引用,所有权闭包外) 未绑定数据:score,每次迭代传递值 Accumulate Sync 异步回调 (async callback) 构造后存储起来, 未来某个时刻...std::unique_ptr 类似的,STL 回调在处理 共享所有权 时,导致多余拷贝: auto shared_lambda = [p = std::shared_ptr{}]()

9.1K94

【愚公系列】2023年01月 .NET CORE工具案例-基于Redis和Sql Server分布式缓存

文章目录 前言 1.分布式缓存概念 2.分布式缓存作用 3..NET CORE分布式缓存 一、基于Redis分布式缓存 1.安装包 2.Program.cs文件中注册 3.项目API控制中使用...缓存这种能够提升指令和数据读取速度特性,随着本地计算机系统向分布式系统扩展,分布式计算领域中得到了广泛应用,称为分布式缓存。...3…NET CORE分布式缓存 .NET CORERedis和sql server分布式缓存使用方法基本相同,主要是基于IDistributedCache接口和DistributedCacheExtensions...读使用Get、GetString及其对应异步方法。...根据key键获取对应值 写可以使用Set、SetString及其对应异步方法 移除可以使用Remove及其对应异步方法 这篇文章介绍ASP.NET CORE 基于Redis和Sql Server分布式缓存

64330

从头编写 asp.net core 2.0 web api 基础框架 (2)

客户端程序可能会发起一个BadRequest, 导致数据不能被Deserialize, 这时候参数product就会变成null....Validation 验证 针对上面的Post方法,  如果请求没有Body, 参数product就会是null, 这个我们已经判断了; 如果body里面的数据所包含属性product不存在, 那么这个属性就会被忽略...但是如果body数据属性有问题, 比如说name没有填写, 或者name太长, 那么执行action方法时候就会报错, 这时候框架自动抛出500异常, 表示是服务器错误, 这是不对....返回: PUT建议返回NoContent(), 因为更新是客户端发起, 客户端已经有了最新值, 无需服务器再给它传递一次, 当然了, 如果有些值是在后台更新, 那么也可以使用Ok(xxx)然后把更新后..., 这不操作不需要做了): [HttpPost] public IActionResult Post([FromBody] ProductCreation product

1.5K80
领券