我想知道是否可以根据条件/事件启动/停止单个 OWIN 中间件?
假设我在 OWIN 上同时托管 Web API 2 和 SignalR,例如提供有关网络设备的信息,并在他们下线/上线时立即通知客户。在某些情况下,比方说“维护”模式,Web API 2 不应该可用,但我仍然需要将某个事件通知客户。所以我需要阻止 Web API 2 响应请求(例如,“不可用”、“查看其他”……),但 SignalR 应该仍然可用。
这是否可以在不重新启动整个 Web 应用上下文的情况下实现?
最佳答案
我认为您可以通过多种方式解决这个问题。如果您需要做的只是在某个时间窗口从 ASP.NET Web API 发送“不可用”,您可以简单地在 ASP.NET Web API 管道中有一个消息处理程序,它在此时间窗口期间唤醒并短路执行所有请求并发送响应。如果您只希望 ASP.NET Web API 行为在停机期间有所不同,这是一个值得关注的选项。
如果您希望多个框架的行为发生变化,您可以考虑让一个总体 OWIN 中间件在一个地方执行此操作,正如 Brock 所建议的那样。
另外,如果你想要更多的控制,你还可以看看MapWhen
扩展,它可以用来有条件地将中间件插入到管道中。
app.MapWhen(context =>
{
// check the condition and return true or false
},
trueApp =>
{
// Run middleware here like this using trueApp
// trueApp.Run or trueApp.Use
});
关于c# - 启动/停止 OWIN 中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22441238/