我正在使用 StructureMap.MVC5,它依赖 PreApplicationStart 方法来注册一个 HttpModule 并初始化 IoC 容器。此时是否可以获取页面正在执行的服务器名称,以便我可以在 IoC 初始化中设置特定于环境的属性?
问问题
85 次
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 回答