WebApi
文章平均质量分 52
梁萌
认真是一种态度
展开
-
.Net Core Action过滤器使用实例(自动启用事务)
使用TransactionScope简化事务代码的编写,TransactionScope是.Net中用来标记一段支持事务的代码的类。EF Core对TransactionScope提供了天然的支持,当一段使用EF Core进行数据库操作的代码放到TransactionScope声明的范围中的时候,这段代码就会自动被标记为“支持事务”。数据库事务有一个非常重要的特性,那就是“原子性”,它保证了我们对数据库的多个操作要么全部成功、要么全部失败,进而帮助我们保证业务数据的正确性。原创 2023-05-03 17:54:21 · 880 阅读 · 0 评论 -
.Net Core Action过滤器使用实例(限流器)
在Action Filter中,如果我们不调用 await next(),就可以终止Action方法的执行了。为了避免客户端恶意发送大量请求消耗服务器资源,实现“一秒钟内同一个IP地址只允许访问一次”如果是频繁访问,那么就不会再执行action方法,使用过滤器起到了限流访问的目的。基于前面对Action Filter的介绍,本节通过实例来说明其用法。Action Filter可以在满足条件的时候终止操作方法的执行。2.将自定义的过滤器进行注入。原创 2022-10-23 16:05:09 · 1086 阅读 · 0 评论 -
.Net Core自定义Action过滤器
通过输出的信息,可以看到程序的执行顺序和开头图片中展示的执行顺序是一样的,先执行过滤器中next()方法前面部分代码,然后执行action方法,最后再分别执行next()方法后面部分的代码。如果有多个action过滤器,那么他们的执行顺序如下所示,每个action过滤器都会被执行两次,分别是在action执行前和执行后各被执行一次。同时可以执行多个自定义的action过滤器,例如,在上面的基础上,增加一个action过滤器。在控制器的方法(action)执行前和执行后,action过滤器都会被执行。原创 2022-10-23 15:29:08 · 999 阅读 · 0 评论 -
.Net Core自定义异常过滤器
同时可以执行多个自定义的异常过滤器,例如,在上面的基础上,增加异常日志记录的过滤器,发生未经处理的异常时,将异常信息记录到日志文件中。需求:当开发环境出现异常时,返回异常的堆栈信息。1.新建一个WebApi项目,创建一个控制器类,写一个测试action,访问一个不存在的文件。设置运行环境变量值为开发,运行项目,可以看到输出的异常信息。设置运行环境变量值为其他,运行项目,可以看到输出的异常信息。下面以WebApi项目为例,记录异常过滤器的使用方法。当系统中出现未经处理的异常时,异常过滤器就会执行。原创 2022-10-23 12:16:49 · 917 阅读 · 0 评论 -
缓存学习总结4(分布式缓存)
一般的小型系统使用服务器内存缓存就已经可以了。但是对于大型系统,web服务器可能有多台,这时候如果每个web服务器都使用内存缓存,同样还是会造成数据库服务器压力大的问题,因为每台web服务器都会去访问数据库服务器,然后做缓存。针对上面的问题,引入了分布式缓存服务器,把多台web服务器获取到的数据都存在一台缓存服务器上,多台web服务器共享一台缓存服务器,这样可以减少web服务器对数据库的访问数量。分布式缓存服务器说明:1.常用的分布式缓存服务器用Redis、Memcached等。原创 2022-09-04 23:15:52 · 437 阅读 · 0 评论 -
.Net Core WebApi 使用JWT完成鉴权和授权
1.引用程序集:System.IdentityModel.Tokens.Jwt2.新建一个控制器(AuthoizeController),用于完成授权功能示例代码:using Microsoft.AspNetCore.Cors;using Microsoft.AspNetCore.Mvc;using Microsoft.IdentityModel.Tokens;using MyBlog.IService;using MyBlog.JWT.Utility.ApiResult;using原创 2021-12-05 19:29:42 · 4517 阅读 · 0 评论 -
.Net Core WebApi 自定义资源过滤器(使用缓存)
在WebApi中想使用缓存,对一些结果集进行缓存,这样可以减小数据库服务器的压力。缓存可以看情况使用,一般缓存哪些经常被查询到并且一般不会更新的数据。该文章使用MemoryCache来达到缓存数据目的,当然缓存技术有很多种,例如redis,memcache等待。下面用示例说明MemoryCache的用法1.自定义类CustomResourceFilterAttribute,继承Attribute,并实现接口IResourceFilterusing Microsoft.AspNetCor原创 2021-12-05 18:51:03 · 1636 阅读 · 1 评论 -
AutoMapper的简单使用
AutoMapper可用于做对象之间的映射,举个简单的例子,有一个用户信息实体,字段有ID、用户名,密码。现在需要往前端返回数据,但又不想把密码返回。就可以新建一个实体,专门返回到前端,字段包括ID、用户名。这时候就可以使用AutoMapper自动完成这一映射动作。使用步骤:1.nuget引用程序集AutoMapper.Extensions.Microsoft.DependencyInjection2.定义一个类,继承Profileusing AutoMapper;u.原创 2021-12-05 11:13:49 · 617 阅读 · 0 评论 -
.NetCore WebApi Post请求参数的传递和获取
post请求有两种传递参数的方法,一种是通过在url后面使用问号(?)将参数拼接的方式传递。另一种是通过data传递参数。get请求只能通过url传递参数,post请求既可以通过url传递参数,也可以通过data(body体)传递参数。可以参考文章:https://www.zhihu.com/question/64312188以下所有实例都是传递三个参数:title、content、typeid。示例通过两种方式请求后端接口,分别用ajax请求和接口测试工具apipost请求。第一种原创 2021-12-01 23:12:38 · 9901 阅读 · 0 评论 -
.NetCore WebApi 3.1跨域解决方法
通过nuget引用程序集:Microsoft.AspNetCore.Corsstartup.cs添加下面代码:具体代码如下:readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";//跨域 services.AddCors(options => { options.AddPolicy(MyAllowSpe...原创 2021-12-01 22:35:18 · 700 阅读 · 0 评论 -
WebApi 身份认证解决方案:Basic基础认证
https://www.cnblogs.com/landeanfen/archive/2016/03/24/5287064.html转载 2021-04-03 12:58:10 · 130 阅读 · 0 评论 -
ASP.NET WebApi简单实例
代码如下所示:调用第一个方法:返回结果:调用第二个方法:返回结果:调用第三个方法:返回结果:调用第四个方法:返回结果:关于post请求,这里有个地方需要注意,api接口中,接收参数的地方一定要用模型对象(类)来接收,如果用变量(string Id,string Name),这样写会出问题,而且有很多坑。还有一点就是创建的WebApi默认用的是Restful风格,个人感觉这种风格用起来非常不...原创 2020-10-18 18:58:52 · 1867 阅读 · 0 评论 -
ASP.NET WEBAPI 跨域请求 405错误
浏览器报错本来没有报这个错,当我在ajax中添加了请求头信息时报错405的报错大概就是后端程序没有被允许此次请求,要解决这个问题,就是在后端程序中允许请求通过。具体操作就是修改web.config配置项,如下图所示:修改后就是这个样子:添加的配置信息如下: <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin...原创 2020-10-21 23:15:10 · 2609 阅读 · 1 评论 -
WebApi自定义Filter实例
要实现的功能是在请求头中需要包含token,并且token的值等于123456才算效验通过,可以调用接口,否则提示401(未通过身份认证)。第一步:自定义一个过滤器,实现接口IAuthorizationFilter public class MyAuthorFilter : IAuthorizationFilter { public bool AllowMultiple => throw new NotImplementedException(); .原创 2020-10-22 07:32:03 · 526 阅读 · 0 评论 -
No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.跨域问题解决
创建一个.net的webapi程序,在项目文件夹下创建一个index.html页面,用来请求webapi接口,代码如下:webapi代码:index代码:在浏览器中可以看到请求成功,并返回了hello这时候如果在webapi项目文件夹外创建一个新的页面,home.html页面,同样发送ajax请求,请求webapi,代码如下:这时候浏览器就报错,发生了跨域请求。这是浏览器的安全机制,默认不允许程序访问其他服务器中的资源。这仅仅是浏览器将请求拦截了...原创 2020-10-24 18:47:00 · 7062 阅读 · 0 评论