SignalR 2.0 で既存の IoC を使用するにはどうすればよいですか?
チュートリアルから、属性を介して OWIN から呼び出されるクラスをセットアップする必要があるようです。
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app /*HOW AM I GONNA GET UNITY CONTAINER HERE?*/)
{
var hubConfig = new HubConfiguration()
{
EnableJSONP = true,
EnableDetailedErrors = true,
EnableJavaScriptProxies = true,
Resolver = new SignalRUnityDependencyResolver(container)
};
// Any connection or hub wire up and configuration should go here
app.MapSignalR(hubConfig);
}
}
}
ここでの問題は、ブートストラップされたコンテナーが既にあり、同じホストで共有される MVC アプリと共有する必要があるコンテナーにシングルトン インスタンスがあることです。
MapSignalR
ただし、ここでの問題は、以前とは異なり、自分のコードからメソッドを呼び出すことができないように見えることです。むしろ、これを行うには OWIN に頼る必要があります。ただし、OWIN は、既にセットアップしたコンテナーを認識していません。
これを解決する最善の方法は何ですか? これらのいくつかを保持するために静的変数を使用してソリューションを一緒にハックする方法について、非常に大雑把なアイデアがいくつかありますが、私はそれを考えるのが嫌いです。コードは脆弱になり、操作の順序によって微妙なバグが簡単に発生する可能性があります。
OWIN が上記のメソッドを呼び出さずに IAppBuilder インスタンスを取得する方法はありますか? このようにして、SignalR が初期化されたときの制御を改善し、独自の IoC を構成に渡すことができます。