gpt4 book ai didi

signalr - OwinMiddleware 和 IOwinContext 等 Microsoft.Owin 类型是否与其他 Owin 服务器不兼容?

转载 作者:行者123 更新时间:2023-12-02 09:00:51 24 4
gpt4 key购买 nike

如果我使用 OwinMiddleware 和 IOwinContext 等 Microsoft.Owin 类型构建 OWIN 中间件,我的中间件是否可以与非 Microsoft Owin 主机/服务器一起使用?我正在查看 Nancy 的中间件类和 SignalR它们看起来与 OwinMiddleware 有很大不同中间件的基类,如 Cookie 身份验证中间件和 WebApi是基于。我正在阅读规范,但我仍然不清楚非 Microsoft Owin 服务器是否可以使用 OwinMiddleware 和 IOwinContext 类型而不依赖于 Microsoft.Owin (我猜这会违背 Owin 的目的)。

最佳答案

如果您使用 OwinMiddleware 基本类型构建中间件,默认情况下它将无法与非 Microsoft Owin 服务器一起使用。但它可以与非 Microsoft 服务器一起使用(以 Nowin 为例,SignalR 可以正常工作)。

IAppBuilder ( https://github.com/owin/owin-hosting/blob/master/src/main/Owin.Builder/AppBuilder.cs ) 的默认实现内置了签名转换功能。这允许任何人注册从 T -> AppFunc 和 AppFunc -> T 的转换。这意味着您可以将中间件与不同的中间件混合搭配。同一管道中的签名。 (有关 OwinMiddleware 如何工作的示例,请参阅 https://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin/Infrastructure/SignatureConversions.cs)。只要存在这种转换,您就可以使“原始”中间件(如 nancy)与 OwinMiddleware 无缝协作。要了解其工作原理,请查看此处:

https://github.com/owin/owin-hosting/blob/master/src/main/Owin.Builder/AppBuilder.cs#L182 (现在你的大脑爆炸了......继续阅读)

对于 SignalR,我们会自动代表您添加转换 ( https://github.com/SignalR/SignalR/blob/dev/src/Microsoft.AspNet.SignalR.Core/Owin/OwinExtensions.cs#L168 ),但它可以在依赖于 OwinMiddleware 的任何代码中完成,以确保转换有效。

如果您使用任何 Microsoft.Owin.Hosting 来引导您的应用程序,但使用非 Microsoft Web 服务器,您也将免费获得转换(有关示例,请参阅 nowin 自述文件 https://github.com/Bobris/Nowin/blob/master/README.md )。

希望这有帮助。

关于signalr - OwinMiddleware 和 IOwinContext 等 Microsoft.Owin 类型是否与其他 Owin 服务器不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com