SignalR 2.0で既存のIoCを使用するにはどうすればよいですか?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をコンフィギュレーションに渡すことができます。
これは奇妙です。 SignalR 2.0以前は、ASP.NETはGlobal.asaxをあなたのために呼び、そこにルートを登録しました。これはほぼ同じことです。 – davidfowl