0

PreApplicationStart メソッドに依存して HttpModule を登録し、IoC コンテナーを初期化する StructureMap.MVC5 を使用しています。この時点でページが実行されているサーバー名を取得して、IoC 初期化で環境固有のプロパティを設定できるようにすることはできますか?

4

1 に答える 1

0

この問題は、IoC の初期化を既に設定されているApplication_BeginRequestメソッドに移動することで解決できました。HttpContextへの呼び出しごとに IoC コンテナーが再初期化されないApplication_BeginRequestようにするために、ミューテックス ブロックを使用できたので、このコードをページ ライフサイクルの早い段階に移動する必要がなくなりました。

public class FirstInitialization
{
    private static Object s_lock = new Object();

    public static string URL { get; protected set; }

    // Initialise only on the first request
    public static string Initialize(HttpContext context)
    {
        if (string.IsNullOrEmpty(URL))
        {
            lock (s_lock)
            {
                if (string.IsNullOrEmpty(URL))
                {
                    URL = HttpContext.Current.Request.Url.AbsoluteUri;
                }

                DependencyResolver.SetResolver(IoC.GetDependencyResolver(URL));

            }
        }

        return URL;
    }
}
于 2015-03-24T13:32:50.647 に答える