前言: 这段时间接手了一个新需求,将一个ASP.NET MVC项目改成前后端分离项目。前端使用Vue,后端则是使用ASP.NET WebApi。...因此就有了这篇文章如何启用ASP.NET WebApi 中的 CORS 支持。...一、解决Vue报错:OPTIONS 405 Method Not Allowed问题: 错误重现: index.umd.min.js:1 OPTIONS http://localhost:1204/api.../Login/ShopKeeperLogin 405 (Method Not Allowed) 解决方法: 在项目Global.asax中添加对OPTIONS方法的处理: /// <...//这样就不会出错,造成页面卡死状态,让用户无限制的等下去 Response.Flush(); } } 二、解决ASP.NET WebApi
(3).System.AspNet.WebApi.Core:包含核心WebApi编程模型和运行时组件。 ...ASP.NET WebAPI使用HTTP方法,而不是URI路径,以此来选择动作。还可以使用MVC样式路由的WebAPI。...三.WebApi核心对象ApiController: 在我们的asp.net webapi项目中,在顶层目录App_Start下,有一个WebApiConfig类,该类只包含一个方法Register...(2).将HTTP请求消息的各元素转换成控制器操作方法的参数,并将操作方法的返回值转换为有效的HTTP响应正文。...ASP.NET Web API框架支持从请求元素到操作方法参数的绑定。对于HTTP响应值转换成适当的HTTP响应消息正文。
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑...扯淡完毕,接着聊正事,上一篇写的是Asp.Net WebApi核心对象解析(上篇),本文是下篇,不管写的怎么样,还望大家多多指正。...一.WebApi处理架构: 我们在学习Asp.Net WebApi时,应该对Asp.Net WebApi的内部运行机制有一个大致的了解,很多人说了解这些基本原理的意义不大,实际开发中应用不到而且还浪费时间...四.WebApi核心对象HttpClient: 上面介绍完服务器端的接收和响应HTTP请求的操作方法,接下来介绍一个客户端生成HTTP请求,用与请求和获取服务器返回的消息,在新版本的.NET中,提供类...五.总结: 本文分为上下两篇,简单的介绍类一下Asp.Net WebApi的一些核心对象,并简单介绍了Asp.Net WebApi路由机制,处理架构,托管方式等等,如有不足和错误之处还望多多指正。
从自身实现上区分 两种框架主要是在Asp.Net的基础上进行改造,主要是对HttpModule和HttpHandler做了扩展,但是实现思路不一样。...Mvc像是在一层上建了第二层,引伸出更强大的路由机制,实现了诸如MvcHandler和ControllerFactory这种消息处理和后台控制器方法选择机制。...Webapi除了扩展了前者以外,另外写出了一套独立的,独立于Asp.Net的消息处理管道,就像是借鉴原来房子的模型,重新设计出了另外一套别墅。...何况它们两者虽然都有Controller和Action,但是请求的处理和响应的回复机制也是不同的,比如说Web Api处理消息有两个核心类是HttpRequestMessage和HttpResponseMessage...从资源返回类型区分 WebAPI支持内容协商(根据客户端能接受的格式要求,返回相应的JSON,XML,ATOM等格式)。 MVC只能利用Json Result返回JSON数据类型。
同源策略主要限制了通过XMLHttpRequest实现的Ajax请求,如果请求的是一个“异源”地址,浏览器将不允许读取返回的内容。...一、JsonpMediaTypeFormatter 在《[CORS:跨域资源共享] 同源策略与JSONP》,我们是在具体的Action方法中将返回的JSON对象“填充”到JavaScript回调函数中,...在重写的这个GetPerRequestFormatterInstance方法中,我们尝试从请求的URL中得到携带的JavaScript回调函数名称,即一个名为“callback”的查询字符串。...从项目名称可以看出,WebApi和MvcApp分别为ASP.NET Web API和MVC应用,后者是Web API的调用者。...我们在WebApi应用中定义了如下一个继承自ApiController的ContactsController类型,它具有的唯一Action方法GetAllContacts返回一组联系人列表。
接下来进入的是俺在ASP.NET学习中最重要的WebAPI部分,在现在流行的互联网场景下,WebAPI可以和HTML5、单页应用程序SPA等技术和理念很好的结合在一起。...所谓ASP.NET WebAPI,其核心概念就是构建REST风格的Web服务,把一起数据视为资源,无论是服务请求或者是数据操作,与以前的SOAP和XML-RPC架构风格有很大不同。...WebAPI的服务器管道,这一块和之前学习的ASP.NET MVC管道很相似,但也有一些差异,不过个人感觉这个管道更加的像J2EE的管道了。...通过HttpActionSelector组件实现对目标Action的选择,方法GetActionMapping的返回值为一个ILookup类型...HttpClient类继承之抽象类HttpMessageInvoker,核心方法SendAsync包括HttpRequestMessage的参数和HttpResponseMessage的返回类型,和之前服务器端的
WebHost:这是一个空的ASP.NET Web应用,它实现了针对ASP.NET Web API的Web Host寄宿,该项目具有针对WebApi的项目引用。...Action方法Get具有一个表示联系人ID的可缺省参数,如果该参数存在则返回对应的联系人,否则返回整个联系人列表。...三、以Web Host方式寄宿Web API 我们在上面已经提到过了,虽然被命名为ASP.NET Web API,但是其核心的消息处理管道却是独立于ASP.NET平台的,所以我们可以对相同的Web API...但是遗憾的是,我们得到了一个状态为“405,Method Not Allowed”的响应,意味着服务端并不支持HTTP-DELETE方法。 ?...ASP.NET Web API的批量寄宿源自它对HttpController类型的智能解析,它会从“提供的”的程序集列表中解析出所有HttpController类型(所有实现了IHttpController
---- HttpResponseException 通常在WebAPI的Controller中抛出的未处理异常,会以500的形式返回到客户端。...() } CreateErrorResponse方法是HttpResponseMessage类型的可扩展方法,该方法最终会调用扩展方法CreateResponse返回一个HttpResponseMessage...类型的对象(ASP.NET WebAPI中Action的返回值最终都会被转换为HttpResponseMessage类型的对象),该对象包含一个HttpError类型实例。...过滤器可分为三个级别: Action Controller Global 注意:ASP.NET MVC和ASP.NET WebAPI的异常过滤器不可混用 ExceptionHandler 以下情形中的异常...); //new InternalServerErrorResult(context.Request); } } 替换ASP.NET WebAPI默认的异常处理器 public
本文将从最简单开始,新从全控制台开始创建一个 WebApi 服务,然后再使用 VisualStudio 创建服务 从 官网 https://dotnet.microsoft.com/ 下载和安装最新版本的...现在空白的 WebApi 服务还没有什么好玩的,让咱添加一个 Api 用于返回有趣的内容 默认创建的项目会添加一个 Controllers 文件夹,里面存放着控制器,控制器里面有方法,在方法上面标记特性就可以用来开启...而通过 Url 链接是 [Route("/api/lindexi")] 里面标记的 /api/lindexi 链接进行访问,也就是可以通过浏览器的 Get 请求也就是从地址栏输入网址访问到 第三部分就是方法本身...,方法本身返回的值将会返回给请求方,如浏览器访问将会返回给浏览器,而客户端访问将会返回给客户端。...core 从 Frp 获取用户真实 IP 地址 ASP.NET Core 连接 GitLab 与 MatterMost 打造 devops 工具 本文代码放在 github 里面也没有什么内容
.Net的面向切面编程 .Net的服务端应用AOP很常见,在Asp.net MVC与Asp.net WebApi等新框架里到处都有AOP的影子,我们可以把一个服务方法“切”为很多面,日志面、验证面、请求方式处理...在流行SOAP的年代,很少需要一个强悍的Client,而今天restful时代,.net也出了一个HttpClient,可以说是与Asp.net WebApi相配吧,虽然HttpClient相对WebClient...AOP基础框架的选择 可以参考这个博客:NET AOP(一)七种AOP实现方法 这里我选择了Castle,Castle可以动态创建接口的实现类并实例化,可以对接口方法调用前进行拦截,并设置返回结果。...WebApiClient设计 现在,我们的目标是,让调用WebApi与编写WebApi一样,声明接口、参数、返回值,打上请求方法与路径(面)特性、返回结果处理(面)特性、请求内容(面)特性。...void Main(string[] args) { Test(); Console.ReadLine(); } } } WebApiClient更多的面 我们可以给框架增加更多的自定义面,比如日志记录、返回结果统一验证等等
不过可惜了,今天我们讲解的主题不是这几种技术,今天主要讲解的是ASP.NET WebAPI。 ...对于ASP.NET WebAPI的优势和特点,在这里就不讲了,需要用到的自然就会选择,也不需要我浪费篇幅去讲解这些,这篇博文主要讲解ASP.NET WebAPI中的HTTP消息的结构和处理消息的核心对象...对于ASP.NET的HTTP处理方式的了解,是我在开发微信公众平台时进一步学习的,微信公众平台提供了对外访问的接口,我们的程序和服务器对微信服务器的接口进行请求访问,微信服务器获取HTTP请求后,返回处理结果...二.WebAPI的HTTP消息解析: HTTP协议的工作方式是在客户端和服务器之间交换请求和响应消息,那么这也就可以说明HTTP的核心就是消息,对于“消息”的了解,我们只要知道消息分为“消息头部...Clear 从 HttpHeaders 集合中移除所有标头。 Remove 从HttpHeaders集合中移除指定的标头。
最开始调用自己的API函数应该是在腾讯云函数的时候,自己写了点破代码,设置了API网关,就可以用浏览器一键调用并返回数据,还挺好玩。 这次就多了解了解并尝试自己搭建WebApi服务。...01 — WebApi是什么 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务。...可以把WebApi看成Asp.Net项目类型中的一种,其他项目类型诸如我们熟知的WebForm项目,Windows窗体项目,控制台应用程序等。...02 — HTTP请求方法 HTTP/1.1协议中共定义了八种请求方法,来以不同方式操作指定的资源: 1. GET 请求指定的页面信息,并返回实体主体。...这样,前面四种请求方法刚好可对应于对数据的查询,添加,修改,删除。WebApi也推荐如此使用。在WebApi项目中,我们请求的不再是一个具体页面,而是各个控制器中的方法。
CorsMessageHandler的自由主要体现在如下两个方面:其一,为简单跨域请求的响应和继预检请求后的真实跨域资源请求的响应添加CORS报头;其二,对从浏览器发送的预检请求予以响应。...从项目名称可以看出,WebApi和MvcApp分别为ASP.NET Web API和MVC应用,后者是Web API的调用者。...Web API支持W3C的CORS规范》实现CORS的实例一样,ASP.NET Web API自身也是借助于应用在HttpController类型或者定义其中的Action方法的特性来定义CORS授权策略的...如下面的代码片断所示,Ajax调用和返回数据的呈现是通过调用jQuery的getJSON方法完成的。...从编程的角度来讲,ASP.NET Web API针对CORS的实现仅仅涉及到两个方面: 其一,HttpConfiguration的扩展方法EnableCors,它用于开启ASP.NET Web API针对
在园子中,已经又前辈介绍过dotnet watch的用法,但是是基于asp.net core 1.0的较老版本来讲解的,在asp.net core 2.0的今天,部分用法已经不太一样,所以就再写一篇文章来介绍...dotnet watch + vs code来提升asp.net core开发效率的方法。...新建项目 首先,在vs code的终端控制台中输入dotnet new webapi命令进行新建webapi项目。 ?...命令执行成功后,即新建了一个webapi项目,新建的webapi项目结构如图: ?...此时,我们在浏览器中输入http://localhost:5000/api/values,即可看到又数据返回,如图: ? 打开value控制器 ?
不光是从使用,还包括这些知识点的原理,虽然深入原理谈不上,但对于日常使用也够了,我想的是知其然,知其所以然。...我们照例新建一个ASP.NET CORE Web API 项目:WebAPI_Middleware namespace WebAPI_Middleware { public class Program...Core WebAPI 使用依赖注入DI 。...四、Run 在上面的 Map 后面我们使用的处理方法中 Run 用于终止管道。也就是说在该管道中如果调用了 Run 那么就直接返回了,即使你后面还添加了 Use 也不会执行。...名为 Invoke 或 InvokeAsync 的公共方法。 此方法必须: 返回 Task。 接受类型 HttpContext 的第一个参数。
在Asp.Net Core 上面由于现在前后端分离已经是趋势,所以asp.net core MVC用的没有那么多,主要以WebApi作为学习目标。...另外还有一个appsetting.json配置文件,这部分内容也在前面已经介绍过,欢迎了解:.net 温故知新:【8】.NET 中的配置从xml转向json { "Logging": { "...我们点击示例接口WeatherForecast,访问接口会返回json格式数据。...也就是说状态码会转换如下json格式返回信息。...,并对创建选项、项目结构、服务要点进行了分析,后面将更进一步学习分享其他asp.net core webapi重要知识。
在 asp dotnet core 3.0 默认的 webapi 返回接口都是返回 json 格式,同时这个 json 格式使用的是 CamelCase 属性名风格。...如果想要兼容之前的格式,让 webapi 返回的 json 的属性名使用 PascalCase 格式,那么请看本文 默认的 ASP.NET Core 3.0 的 WebAPI 的 json 返回值的属性使用首字符小写的...CamelCase 属性名风格,可以通过在 ConfigureServices 方法配置让返回值属性使用其他风格 最简单的方法是设置 PropertyNamingPolicy 属性,请看代码...NewtonsoftJson 设置 首先安装 Microsoft.AspNetCore.Mvc.NewtonsoftJson 库 安装之后可以在 Startup.cs 文件里面的 ConfigureServices 方法添加设置...options.SerializerSettings.ContractResolver = new DefaultContractResolver()); Migrate from ASP.NET
前言: 有时候我们系统需要开放数据给手机App端或其他移动设备,不得不说Asp.net WebApi是目前首选 本节记录Asp.net MVC WebApi怎么利用Unity注入。...系列开头已经讲解了普通的Asp.net MVC如何用Unity注入容器 不明白什么是IOC,DI,控制反转的自行百度补脑,否则无法阅读本文 其实这也是一次技术上的记录,因为找遍大百度居然没有可以用的利用...0a47 (这是一个已经包含了Unity注入的普通MVC例子)包含4个需要被注入的类库,BLL,IBLL,DAL,IDAL 开发工具:VS2013+SQL2012(数据库不是必要) 开始: 1.新建Asp.Net...添加控制反转代码到ValuesController [Dependency] public ISysPersonBLL m_BLL { get; set; } 这样我们就可以用m_BLL来访问BLL的方法...如果断点执行到调用处,那么恭喜你,注入顺利成功,可以调用了(配图为返回数据库第一条数据的ID,数据和脚本在源码下载查看) ?
可以很容易集成至ASP.NET Core,颁发token。 使用Id4基本步骤如下: **1....3.创建webapi 限制开始创建我们需要保护的api资源 3.1 新建项目 dotnet new webapi -n webapi cd .. dotnet sln add ....4.5 编码-调用api 在这一步,使用扩展方法SetBearerToken,这个方法主要组装http请求:授权头+access token,并以此请求访问api资源: // call api var...\webapi\ dotnet run 用vs启动client 获取access-token,我们通过http://jwt.calebb.net/解析 这也是api返回的Claims “身份认证的中间对...就没收到token,所以返回Unauthorized未授权 类比场景:进入小区,没有门禁,肯定不让你进 5.4 修改API对scope的验证要求 被保护的资源webapi中配置plicy.RequireClaim
由ASP.NET Core WebApi添加Swagger报错引发的探究 缘起# 在使用ASP.NET Core进行WebApi项目开发的时候,相信很多人都会使用Swagger作为接口文档呈现工具...示例# 从项目渊源上说起,笔者所在项目,很多都是从.Net FrameWork的老项目迁移到ASP.NET Core上来的,这其中做了很多兼容的处理,来保证尽量不修改原有的业务代码,这其中就包含了...WebApi相关的部分,这里我们用简单的示例描述现有WebApi的Controller的情况,大致写法如下 [Route("api/[controller]/[action]")] [ApiController...AddApiExplorerServices(builder.Services); return builder; } 看到IMvcCoreBuilder接口,我们就应该感觉到这是Mvc的核心接口扩展方法...如果想需要更智能的判断Action默认的HttpMethod需要如何定位,直接修改AutoHttpMethodIfActionNoBind扩展方法,因为我们WebApi项目的Action大部分调用方式都是