Joh*_*lip 9 asp.net iis odata asp.net-web-api
我想知道在IIS中托管的ODataController上,odata http请求的完整生命周期是什么.
例如:
HttpPost,ApplyFilter被应用?也许这个线程可以帮助你: 43个简单步骤中的ASP.NET Web API 2 HTTP消息生命周期
然后将请求传递给HttpServer的实例.

HttpServer负责调度HttpRequestMessage对象.
如果管道上存在DelegatingHandler的一个或多个全局实例,则将请求传递给它.请求按照所述实例添加到管道的顺序到达DelegatingHandler的实例.
DelegatingHandler实例可以跳过管道的其余部分并创建自己的响应.我在我的自定义验证与FluentValidation帖子中完成了这一点.
HttpRoutingDispatcher根据匹配的路由选择要调用的路由处理程序.如果不存在这样的路由(例如,Route.Handler为null,如图所示),则请求直接进入步骤10.












查看源代码,ODataController是另一个控制器,它继承自 ApiController,具有自定义路由和格式。所以我想所有应用于 ApiController 的逻辑也适用于它。它还具有自定义格式和自定义路由,使用ODataFormatting和ODataRouting
什么是 IIS 流水线步骤?
IIS 流水线步骤与任何其他 mvc 控制器相同。本质上,我们拥有构成流水线的所有 http 模块和处理程序。更多详细信息可以在asp.net 应用程序生命周期中找到。从这条线来看,当 mvc 请求来自 URLRoutingModule 时,MvcRouteHandler 和 Mvchandler 协同工作来为 MVC 请求提供服务。下一个问题详细解释。
进入 ASP.NET 控制器区域时如何处理请求?什么时候应用路由?
一切都从一个 ODataController 开始。几乎 MVC 中的一切都是可扩展的(asp.net mvc 中的 13 个扩展点),你命名它,所有这些点都为 OData 扩展。例如从自定义控制器开始,我们有
等等诸如此类。
/// 为支持使用 OData 格式写入和读取数据的 OData 控制器定义基类
/// </summary>
[ODataFormatting]
[ODataRouting]
[ApiExplorerSettings(IgnoreApi = true)]
public abstract class ODataController : ApiController
Run Code Online (Sandbox Code Playgroud)