首页
学习
活动
专区
圈层
工具
发布

Asp.Net WebApi核心对象解析(二)

在谈WebApi处理架构之前,我们还是来看一下微软为WebApi提供的海报,这里就不拿图了,需要看的可以点击下载:下载地址     Asp.Net Web Api处理架构可以分为三层,分别是托管层、消息处理程序管道...二.WebApi托管方式解析:     在Asp.Net Web Api的托管方式有三种,接下来我们来大致了解一下这三种托管方式。        ...(1).在任何Windows进程中自托管。        (2).Web托管,即在IIS之上使用ASP.NET管道进行托管。...(在一个owin兼容的服务器上建立一个webapi层)      在使用web托管时,所使用的是ASP.NET的管道和路由功能,将HTTP请求转发到一个新的ASP.NET处理程序,HttpControllerHandler...DefaultRequestHeaders:获取应随每个请求发送的头。       MaxResponseContentBufferSize:获取或设置中的最大字节数读取响应内容时缓冲。

3.6K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    谈谈基于OAuth 2.0的第三方认证

    之后调用相应的Web API获取当前登录用户的个人信息。...我们在ASP.NET Web API应用中定义了如下一个继承自ApiController的DemoController,它具有唯一一个用于获取当前登录用户个人基本信息的Action方法GetProfile...在该方法中,它通过我们定义的扩展方法TryGetAccessToken从当前请求中提取Access Token,然后利用它调用Windows Live Connect提供的Web API(https:/...,其值正好是调用Web API的地址,该地址会自动绑定到Action方法CaptureToken的requestUri参数上。...在该View中,我们从当前地址的Hash(#)部分得到Access Token,并将其作为查询字符串附加到从ViewBag中得到的资源访问地址上,并通过设置location的href属性的方式携带Access

    1.3K70

    微服务实战(八):落地微服务架构到直销系统(服务高可用性)

    在微服务架构风格的系统中,如果单个微服务垮掉或地址不可访问,虽然对系统的影响是有限的,但我们也必须采取一定的手段来保证每个微服务尽量可用;并且在大并发的情况下,虽然可以通过EDA消息队列处理的方式提高吞吐量...在SQL Server 2016中,AlwaysOn的管理界面大致如下,作为开发人员或架构师,了解即可,通常这是由运维团队管理的。 ?...这里通常会有两个方面的原因造成微服务无法访问,一是微服务所在的Web Server或主机停止响应或关机、二是微服务并发访问量太大,造成资源大量占用,无法响应用户请求。...在IT运维调整的情况下,微服务所在的域名或IP地址可能会发生变化,这样前端用户在拿到新的域名或IP地址前,将无法正常调用服务。 为了解决这个问题,我们就需要将微服务通过一个API网关组织起来。...有了配置文件后,就可以使用相关的API网关库加载配置文件到API网关的WebApi中。 2.WebApi自动注册地址信息 如果总是通过手工配置映射信息,还是比较麻烦。

    99430

    在Scala中构建Web API的4大框架

    Play Framework ——Java和Scala的高速Web框架        Play Framework是一个开源的Scala框架,于2007年首次发布。...在撰写本文时,Play 2.6是Play的当前版本,已在开发中取代了Play 1。 优点 1. 与JVM密切相关,因此,Java开发人员会发现它很熟悉且易于使用。 2....正如文档所描述的那样,“它不是一个Web框架,而是一个更通用的工具包,用于提供和使用基于HTTP的服务。虽然与浏览器的交互当然也在范围内,但它并不是Akka HTTP的主要关注点。” 优点 1....Chaos ——用于在Scala中编写REST服务的轻量级框架        Chaos是Mesosphere的框架。...Chaos指的是在希腊创世神话中,宇宙创造之前的无形或虚无状态。同样,Chaos(框架)先于创建服务“宇宙”。 优点 1. Chaos易于使用,特别是对于那些熟悉使用Scala的用户来说。 2.

    2.6K40

    ASP.NET Web API编程——控制器

    2控制器操作返回值 类型 说明 void 操作返回值为void时,Web API返回空HTTP响应,其状态码为204(无内容) HttpResponseMessage Web api会将此返回值直接转换为...第一种调用HttpResponseMessage的构造函数,实例化一个HttpResponseMessage,并返回。Web API会将其直接转换为HTTP消息。...(); response.Content.Headers.ContentLength = 32767; 3)Content-Range,一个数据片段在整个文件中的位置 例: HttpResponseMessage...当控制器操作返回此类型时,Web API会调用ExecuteAsync方法创建类型为HttpResponseMessage的实例,然后将这个实例转换为HTTP消息。...2.3返回值为内置类型或自定义类型 返回值为内置类型或自定义类型时,Web API使用格式化器序列化返回值,并将其写入HTTP消息中,响应的状态码为200。

    2.7K50

    跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?

    在《通过扩展让ASP.NET Web API支持W3C的CORS规范》中,我们通过自定义的HttpMessageHandler自行为ASP.NET Web API实现了针对CORS的支持,实际上ASP.NET...特性应用到定义在ContactsController上并作如下的设置。...中,我们并不调用当前HttpConfiguration的EnableCors方法开启ASP.NET Web API针对CORS的支持,而是采用如下的方式将创建的CorsMessageHandler对象添加到消息处理管道中...如果现在运行ASP.NET MVC程序,通过调用Web API以跨域Ajax请求得到的联系人列表依然会显示在浏览器上。...方法 通过上面的介绍我们知道针对ASP.NET Web API的CORS编程首先需要做的就是在程序启动之前调用当前HttpConfiguration的扩展方法EnableCors开启对CORS的支持,那么该方法中具体实现了怎样操作呢

    3K110

    Asp.Net Core中HttpClient的使用方式

    在.Net Core应用开发中,调用第三方接口也是常有的事情,HttpClient使用人数、使用频率算是最高的一种了,在.Net Core中,HttpClient的使用方式随着版本的升级也发生了一些变化.../api/resource/getresource"; var httpResponseMessage = await httpClient.GetAsync(requestUri);.../api/resource/postresource"; var httpResponseMessage = await httpClient.PostAsJsonAsync(requestUri...return Ok(httpResponseMessage); }   但是这种情况下会出现一个严重的问题,在不停的调用情形下,tcp连接数会被耗尽,虽然使用using方式调用HttpClient并在退出前调用...,创建一个IHttpClient接口,及相应的实现StandardHttpClient,实现类种加入HttpClient属性,在实现类构造函数中完成初始化后便可直接使用该实现类完成资源请求工作。

    1.4K20

    C#中的HTTP客户端:专家级最佳实践与性能优化指南

    在微服务架构中,或与外部API通信时,HTTP客户端是必不可少的组件。然而,许多开发人员在实现HTTP客户端时未能充分考虑性能和可用性。...本文将介绍使用C#中的HttpClient类的最佳实践,并探讨HTTP通信的一些重要方面。 1....HttpClient是为长期使用而设计的,但将其作为单例使用有其问题: • HttpClient不会自动响应DNS变更 • 在某些情况下,之前设置的默认请求头可能会带到后续请求 • 没有自动断路器机制...• 无法控制同一主机的最大连接数(可能导致拥塞) 3....也可以在单个请求基础上设置不同的超时。 6. 实现弹性模式 HTTP通信受多种因素影响,可能出现间歇性故障。

    38810

    快速入门系列--WebAPI--01基础

    常见特性 Class: [RoutePrefix("api/demo")],针对具体类的路由设置,相对RouteConfig,粒度更细。...,在IE设置中包括6个隐私等级,对cookie的管理程度各不相同,从cookie完全不可读写,到完全可读写,默认的等级为中,阻止没有精简隐私策略的第三方cookie。...步骤2:在IIS中,选择我们指定的站点(Web Site),右键选择编辑绑定,在网站绑定页面添加https类型并选择相应的证书,在浏览网站栏就可以看到http, 和https了。...这儿想提醒大家的一点,就是这个重定向设置可以是多个,并且一定要和你每一个请求的重定向设置对应起来,一旦没有设置,windows live会报无法提供服务的错误。 ?...对了,实际使用中,不需要这么麻烦,你可以看到在project的app_start的StartupAuth中,可以看到微软的设置,只用输入对应的clientId和clientSecret。

    2.6K70

    【愚公系列】2023年10月 .NET CORE工具案例-HTTP请求之WebApiClientCore

    在WebApiClientCore中,可以通过在方法的特性上设置ContentType和CharSet属性来指示请求或响应的相应内容类型和字符集。...在这个例子中,我们使用ASP.NET Core创建一个Web API服务,供客户端测试使用。...我们创建了一个名为PersonsController的ASP.NET Core Web API控制器。...注意,在服务端控制器中,我们使用FromBody属性将更新文档从请求体中获取,并使用JsonPatchDocument.ApplyTo方法将更新应用到Person实体类中。...6.5 响应内容缓存 ☀️6.5.1 声明缓存 1、基本使用 在使用WebApiClientCore进行Web API访问时,可通过以下方式声明缓存,在接口上使用CacheAttribute指定缓存策略

    2.1K11

    在Sitecore8.2解决方案中使用Swagger作为API管理工具

    假设您的Sitecore解决方案需要一些API服务。显而易见的是使用.net Web API实现它们。有时,在构建消费应用程序时,理解API的各种方法对开发人员来说可能是一项挑战。...假设您的Sitecore解决方案需要一些API服务。显而易见的是使用.net Web API实现它们。有时,在构建消费应用程序时,理解API的各种方法对开发人员来说可能是一项挑战。...所以我实现了一个Web API控制器,我希望在我的Sitecore实例中托管它并以某种方式记录它: namespace Feature.WebApi.Controllers { using System.Web.Http...我们可以通过取消另外一行配置来绕过它: c.DisableValidator(); Web API服务 现在它查找并运行,我甚至能够找到我的服务方法。...但是,Sitecore有很多自己使用的Web API服务,很难找到我自己的服务。将Sitecore本机Web API控制器与我的分离是很好的。

    16510

    如果调用ASP.NET Web API不能发送PUTDELETE请求怎么办?

    但是理想和现实是有距离的,虽然HTTP协议提供了一系列原生的HTTP方法,但是在具体的网络环境中,很多是不支持的。...文件中,我们采用如下的代码将一个HttpMethodOverrideHandler对象注册到ASP.NET Web API的消息处理管道中。...在该方法中,我们根据指定的HTTP方法创建了一个指向目标Web API的HttpRequestMessage对象,并将其作为参数调用HttpClient对象的SendAsync方法对目标Web API发起调用...Web API成功调用后会得到最终被执行的目标Action方法的名称,我们将它连同当前请求采用的HTTP方法和“X-HTTP-Method-Override”报头值打印在控制台上。...在启动Web API宿主程序后运行客户端控制台应用,我们会得到如下所示的输出结果。

    1.7K50

    Asp.Net Web API 2第四课——HttpClient消息处理器

    Asp.Net Web API 导航     Asp.Net Web API第一课:入门http://www.cnblogs.com/aehyok/p/3432158.html       Asp.Net...Web API第二课:CRUD操作http://www.cnblogs.com/aehyok/p/3434578.html       Asp.Net Web API第三课:.NET客户端调用Wep...比较有代表性的时,一系列的消息处理被链接在一起。第一个处理器接收HTTP请求,做一些处理,然后将此请求传给下一个处理器。在某个点上,这个响应被创建,被进行回溯。这种模式就叫做委托处理器。 ?...你可以把自定义消息处理器插入到客户端管道中。 Asp.Net Web API也可以使用服务端的消息处理器。更多的信息请参考"HTTP消息处理器"(暂未实现。)...本文参考链接http://www.asp.net/web-api/overview/web-api-clients/httpclient-message-handlers

    67230

    聊一聊Asp.net过滤器Filter那一些事

    最近在整理优化.net代码时,发现几个很不友好的处理现象:登录判断、权限认证、日志记录、异常处理等通用操作,在项目中的action中到处都是。在代码优化上,这一点是很重要着力点。...登录认证:登录认证一般我们采用的是通过在请求的header中传递token的方式来进行验证,这样即使用与一般的MVC登录认证,也使用与API接口的Auth认证,并且也不依赖于用户前端js设置等。...MVC和API异同:   命名空间:MVC:System.Web.Http.Filters;API:System.Web.Mvc   注入方式:在注入方式上,主要包括:全局->控制器Controller...时,就会执行到该方法中 /// 但是,我平时在应用过程中,一般都是在AuthorizeCore根据不同的认证结果,直接做认证后的逻辑处理 /// public...的异常处理实例代码: /// /// API自定义异常处理机制 /// 说道异常处理,其实我们脑海中的第一反应,也该是try/cache操作 /// 但是在实际开发中

    1.4K20

    Asp.Net Web API 2第八课——Web API 2中的属性路由

    Web API支持一种新的路由类型,被叫做属性路由。顾名思义,属性路由是用属性来创建路由。在你的Web API中属性路由可以让你更好的控制URI。你能容易的创建描述资源阶层的URIs。   ...这个路由规则一致的被应用于所有的控制器。不幸的是,基于公约的路由是很难支持确切的URI模式,而这个确切的URI模式在Restful APIs中是很普遍的。...API版本控制  在下面的例子中,"api/v1/products"相对于"api/v2/products"将被路由到不同的控制器。...这种方式,你可以结合两种方式在同一个项目中。 4、路由前缀 通常情况下,在同一个控制器中的所有路由以相同的前缀开头。...在大多数情况下,除非在你的管道中有自定义的模型绑定,这两种表现是等价的。 7、路由名称  在Web API中,每个路由都有一个名称。路由名称被用于生成链接,你能在HTTP响应中包含一个链接。

    1.2K40

    Asp.Net Web API 2第十五课——Model Validation(模型验证)

    ://www.asp.net/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api 当客户端发送数据给你的...Data Annotations——数据注解  在ASP.NET Web API中,你可以使用System.ComponentModel.DataAnnotations命名空间的注解属性来设置模型属性的验证规则...在控制器动作中,你可以检查该模型是否有效: public class ProductsController : ApiController { public HttpResponseMessage...此时模型的状态是有效的,因为零是这些属性的有效值。这是否是一个问题取决于你所处的场景。例如,在一个更新操作中,你可能希望区分出“零”与“未设置”。...HttpError类在RC版(指Web API的预览版)中无效。 你可以将此过滤器全局性地运用于所有Web API控制器。

    90020

    ASP.NET Web API编程——路由

    路由过程大致分为三个阶段: 1)请求URI匹配已存在路由模板 2)选择控制器 3)选择操作 1匹配已存在的路由模板 路由模板 在WebApiConfig.Register方法中定义路由,例如模板默认生成的路由为...对于api/root/{id} 务必对defaults设置控制器(controller)的默认值,,不然无法执行路由过程。可以不设置操作(Action)。...根据获得的控制器(Controller)名查找Web API中的控制器(controller)。如果没有查找到控制器(controller)名或者匹配到了多个,那么返回错误。...设置路由名称后,可以在使用控制器(controller)的属性ApiController.Url或ApiController.Route拼接URL。.../localhost:45778/api/v2/publication时,显示"api/v2/publication" 由于上述操作定义在同一个控制器(Controller)类中,所以方法名不能相同。

    2.1K80
    领券