예제 #1
0
        private void InitHostingEnvironment()
        {
            try
            {
                var env = new HostingEnvironment();

                var type = env.GetType();
                var init = type
                    .GetMethods(BindingFlags.Instance | BindingFlags.NonPublic)
                    .FirstOrDefault(m => m.Name == "Initialize");

                var args = new object[init.GetParameters().Length];
                args[0] = ApplicationManager.GetApplicationManager();
                args[1] = this;
                args[2] = GetConfigMapPathFactory();

                init.Invoke(env, args);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
예제 #2
0
        private void InitHostingEnvironment()
        {
            try
            {
                // very hacky way to initialize ASP.NET runtime inside same app domain

                var appSettings = ConfigurationManager.AppSettings;
                Debug.Assert(appSettings != null);

                var cfg = typeof(ConfigurationManager).GetStaticField("s_configSystem");

                var env = new HostingEnvironment();

                var configSystem = env.GetType().Assembly.GetType("System.Web.Configuration.HttpConfigurationSystem", false);

                var cfgsys = cfg.GetField("_configSystem");
                configSystem.SetStaticField("s_configSystem", cfgsys);
                configSystem.SetStaticField("s_configRoot", cfgsys.GetField("_configRoot"));
                configSystem.SetStaticField("s_inited", true);

                var type = env.GetType();
                var init = type
                    .GetMethods(BindingFlags.Instance | BindingFlags.NonPublic)
                    .FirstOrDefault(m => m.Name == "Initialize");

                var args = (from p in init.GetParameters() select GetDefaultValue(p.ParameterType)).ToArray();
                args[0] = ApplicationManager.GetApplicationManager();
                args[1] = this;
                args[2] = GetConfigMapPathFactory();

                init.Invoke(env, args);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }