c# - Owin 中间件 VS WebAPI DelegatingHandler

标签 c# .net asp.net-web-api owin

我正在阅读文章并检查示例,我发现 Owin 中间件的使用方式与 WebAPI DelegatingHandler 相同:记录传入请求、验证 header 等。

我唯一的理解是 Owin 中间件在管道中出现在 DelegatingHandlers 之前。因此,如果您为用户授权创建一个 Owin 中间件,您可以在较低级别更快地拒绝被禁止的请求。

这两者有什么区别,或者使用它们有什么优点/缺点吗?

最佳答案

我也在研究这个以找出有什么区别。我可以想出一些可能对你有帮助的想法。我想他们的目的是一样的,没有太大的不同。但是与 owin 相比,DelegatingHandler 是旧机制 Owin 中间件:

  1. 这样做的目的是分离服务器和应用程序。通过这样做,您可以向您的管道(称为 owinmiddleware)注入(inject)大量模块。
  2. 通过这样做,您可以在 web api 的 HttpMessageHandler 可以处理它之前,在 httprequest 的早期阶段拦截请求。例如。您可以在创建 http Controller 之前读取用于初始化依赖项的数据。
  3. 通过构建模块,您可以重用 asp.net core 关注的中间件。

委托(delegate)处理程序:

  1. 它是网络 API 的一部分。在这个级别,我们有 HttpRequestMessage、HttpResponseMessage,因此我们可以轻松地使用它们而不是 owin 中间件进行操作(例如,您可以从请求消息正文中读取数据,而不必担心我们做了一些影响消息的事情)

    <
  2. 实际上,通过这样做,您将非常依赖 Web API 管道。我并不是说您以后不能重用它,但它可能会发生。

希望它能为您提供有用的信息。

谢谢,

关于c# - Owin 中间件 VS WebAPI DelegatingHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38707539/

相关文章:

c# - 使用 Windows 窗体应用程序在何处存储临时文件

c# - PostAsJsonAsync 返回 500 内部错误

c# - 从c#中的excel单元格读取公式计算值

c# - 如何在 TextBox 的 ListBoxes 多重绑定(bind)中显示项目的属性值

c# - UWP应用如何全屏显示状态栏?

.net - 如果文件不存在,文件删除操作是否应该抛出异常

c# - 如何在 C# 中触摸文件?

android - 如何使用于在 ASP.NET Web API 中创建自定义异常的字符串在 Android 中被解释为 HttpURLConnection.getResponseMessage ()

.net - 如何使用自定义 WebResponse 创建 WebException

c# - 包含 'Any CPU' 和 'x86' 项目的 Visual Studio 2010 解决方案的建议