IAppBuilder(https://github.com/owin/owin-hosting/blob/master/src/main/Owin.Builder/AppBuilder.cs)的默认实现具有内置的签名转换功能.这允许任何人注册从T – >的转换. AppFunc和AppFunc – >这意味着您可以在同一管道中混合和匹配中间件与不同的签名. (有关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服务器,那么您将免费获得转换(参见现在的自述文件中的例子https://github.com/Bobris/Nowin/blob/master/README.md).
希望这可以帮助.