一.ASP.NET 中的 Web API [水煮 ASP.NET Web API2 方法论](1-1)在MVC 应用程序中添加 ASP.NET Web API 与 ASP.NET MVC 在同一个进程中使用 ASP.NET WEB API [水煮 ASP.NET Web API2 方法论](1-2)在 WebForm 应用程序中添加 ASP.NET Web API 与 ASP.NET Web Form 在同一个进程中使用 ASP.NET WEB AP [水煮 ASP.NET Web API2 方…
阅读导航 问题 解决方案 工作原理 代码演示 在此解释一下,空气路由,是本人臆想出来,觉着更能表达 IgnoreRoute 的意图,如果看着辣眼睛^^,请见谅. 问题 我们在之定义过集中式路由,集中式路由有一个特点就是短路,但是现在我们不想让某些路由工作(匹配并由路由引擎处理请求).那么我们应该怎么办呢? 解决方案 其实思路很简单,就是想把某些路由忽略了.ASP.NET WEB API 提供了一个叫做的 StopRoutingHandler 的处理器,简单说,他就是一个消息处理器,可以通过他来强…
问题 想创建一个从 ASP.NET MVC controller 到 ASP.NET Web API controller 的直接链接,或者反向链接. 解决方案 可以使用 System.Web.Http.Routing.UrlHelp 的实例来创建一个指向 Controller的链接,来暴露ApiController(作为 Url 属性).着和在 RequestContext 上一样,会被附加到 HttpRequestMessage 实例.为了达到这个目的,我们需要调用链接方法或路由方法,然后传…
问题 怎么样将 Asp.Net Web Api 加入到现有的 Asp.Net MVC 项目中 解决方案 在 Visual Studio 2012 中就已经把 Asp.Net Web Api 自动地整合到了 MVC 项目模板中.自 Visual Studio 2013 以后,创建 ASP.Net Web应用程序使用的是一种新的"One ASP.NET"项目向导,在这里可以选择相应的组件,例如,MVC,Web API,WebForm,等等."One ASP.NET" 是…
问题 怎么样将 Asp.Net Web Api 加入到 Asp.Net Web From 应用程序中 解决方案 在 Visual Studio 2013 中,创建新的 Web From,可以直接在"新建 ASP.NET 项目" 创建项目向导中,勾选ASP.NET Web API ,将其加入进来.如图 1-2 所示. 图 1-2. 在Asp.NET 项目向导,同时选中 Web Form 和 Web API 因为可以通过 NuGet 添加 ASP.NET Web API ,所以使用“Ins…
问题 我们想快速启动一个 ASP.NET Web API 解决方案. 解决方案 APS.NET 模板一开始就支持 ASP.NET Web API.使用模板往我们的项目中添加 Controller,在我们解决方案的 Controllers 文件夹上右键,选择“添加”->"Scaffolding". 即用模式,可以从下面选择一个: Web API2 Controller Web API2 Controller with actions, using Entity Framework…
阅读导航 问题 解决方案 工作原理 代码演示 问题 如果仅仅针对指定的路由进行某些特定的消息处理,而不是应用于所有路由,我们应该怎么做呢? 解决方案 ASP.NET WEB API 的很多功能都内建了消息处理器.他们真正的威力是为消息的全局处理以及为全局的应用程序业务处理提供比较简单的处理机制.不过,在某一些场景下的需求是,使用消息处理器处理应用程序指定部分的特定行为. 我们要基于每个路由配置消息处理器(DelegatingHandler),而不是在 HttpConfiguration 中注册全…
问题 在 Controller 中有一个 public 的方法,但是又不想将这个 publlic 方法暴露成为一个 API. 解决方案 ASP.NET Web API 中,正常是通过 HTTP 谓词来匹配 Controller 中相关 Action 的.默认情况下,Contoller 中的每个 public 方法都是一个 Action.为了防止 public 的方法成为 Action,只要在 public 的方法上使用 [NonAction] 属性就可以. 工作原理 NoActionAttrib…
问题 定义什么样的路由,可以不会受请求参数类型和数量的限制,而被全部捕获? 解决方案 在路由模板中,给参数添加一个"*"前缀,例如 {*param},只要请求的 URL 能够和路由模板其余的部分匹配,这样的请求会被全部捕获.这个不仅适用于集中式路由,也试用于属性路由. 工作原理 如果整个路由模板只是 {*param},那么,请求 URL 的整个相关部分,都会被当作字符串参数传入到 Action 的,可以在 Action 内部处理或者转. 如果有一些其他路由模板段在 {*param} 前…
问题 怎么样限制路由中参数的值. 解决方案 ASP.NET WEB API 允许我们通过 IHttpRouteConstraint 接口设置路由约束.集中式路由和直接式路由都可以使用 IHttpRouteConstraint. 框架提供了 18 个接口,他提供了大部分类型的约束,例如,路由参数长度相关的约束,可以确保值都在定义范围内,或者限制数据类型.当然也可以通过实现接口 IHttpRouteConstraint 来自定义约束逻辑. 工作原理 IHttpRoutConstraint 是一个 H…