/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("<%@ Application Language=\"C#\" %>\r\n\r\n"); #line 12 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" // Import name spaces foreach (var each in this.Namespaces) { #line default #line hidden this.Write("<%@ Import namespace=\""); #line 16 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(each)); #line default #line hidden this.Write("\" %>\r\n"); #line 17 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" } #line default #line hidden this.Write("\r\n<script RunAt=\"server\">\r\n\tprivate void RegisterRoutes(RouteCollection routes)\r\n" + "\t{\r\n"); #line 24 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" // Add routes foreach (var route in this._routes) { #line default #line hidden this.Write("\t\t"); #line 28 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(route.RouteMapFunctionCall)); #line default #line hidden this.Write("(\r\n\t\t\troutes,\r\n\t\t\t\""); #line 30 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(route.Name)); #line default #line hidden this.Write("\",\r\n\t\t\t\""); #line 31 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(route.Path)); #line default #line hidden this.Write("\",\r\n\t\t\t"); #line 32 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture((route.Defaults ?? "null"))); #line default #line hidden this.Write(");\r\n"); #line 33 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" } #line default #line hidden this.Write(" }\r\n\r\n protected void Application_Start(object sender, System.EventArgs e)\r" + "\n {\r\n RegisterRoutes(System.Web.Routing.RouteTable.Routes);\r\n"); #line 41 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" // replace trace if the given trace writer type is not null if (this._traceWriterType != null) { #line default #line hidden this.Write("\r\n GlobalConfiguration.Configuration.Services.Replace(\r\n typeof" + "(ITraceWriter),\r\n new "); #line 48 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this._traceWriterType.Name)); #line default #line hidden this.Write("());\r\n"); #line 49 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" } // END if (this.Options.TraceWriterType != null) #line default #line hidden #line 52 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" // call the configuration method if it is given if (this._configureMethod != null) { var configMtdDeclaringType = this._configureMethod.DeclaringType; string declareTypeName; if (configMtdDeclaringType.IsGenericType) { declareTypeName = WebAppSetupOptions.GenericTypeFullNameToString(configMtdDeclaringType); } else { declareTypeName = this._configureMethod.DeclaringType.FullName; } string methodName = this._configureMethod.Name; #line default #line hidden this.Write("\t\tGlobalConfiguration.Configuration.SetHttpServer(GlobalConfiguration.DefaultServ" + "er);\r\n\r\n\t\t"); #line 72 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(declareTypeName)); #line default #line hidden this.Write("."); #line 72 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(methodName)); #line default #line hidden this.Write("(GlobalConfiguration.Configuration);\r\n"); #line 73 "E:\dd\DevDiv\Offcycle\WPT\WebStackRuntime\QA\Func\src\Common\WebHost\GlobalAsaxTemplate.tt" } // END if (this.Options.ConfigureMethod != null) #line default #line hidden this.Write(" }\r\n</script>"); return(this.GenerationEnvironment.ToString()); }
private IDirectory GetAssemblyAndResourceDirectory(WebHostContext context) { var descriptor = context.TestType; var frame = context.Frame; var options = WebAppSetupOptions.GenerateDefaultOptions(); options.AddWebApiAssemblies(); options.AddRoute( new WebAPIRouteSetup( "api default", "api/{controller}/{action}", "new { action = " + typeof(RouteParameter).FullName + ".Optional }")); var deploymentDescriptor = context.Deployment; if (deploymentDescriptor.ScopePath != null) { var resourceAssembly = deploymentDescriptor.ScopeResourceType != null ? deploymentDescriptor.ScopeResourceType.Assembly : descriptor.TestAssembly; options.AddAssemblyAndReferences(resourceAssembly); options.AddTextFilesFromResources(resourceAssembly, deploymentDescriptor.ScopePath); } if (options.TextFiles.ContainsKey("web.config")) { options.UpdateWebConfig(WebConfigHelper.Load(options.TextFiles["web.config"])); } if (!descriptor.TestControllerTypes.Any()) { if (descriptor.TestAssembly == null) { throw new InvalidOperationException( "Neither Controller Types or test assembly is given to web-host strategy. " + "That will cause issue in runtime, because the assemblies contain the controller " + "will not be copied to IIS website bin folder. Please given Controller Type by " + "NuwaControllerAttribute."); } options.AddAssemblyAndReferences(descriptor.TestAssembly); } else { foreach (var ct in descriptor.TestControllerTypes) { options.AddAssemblyAndReferences(ct.Assembly); } } // set trace writer TraceElement traceElem = frame.GetFirstElement <TraceElement>(); if (traceElem != null) { options.TraceWriterType = traceElem.TracerType; } // set configure action if (descriptor.ConfigureMethod != null) { options.ConfigureMethod = descriptor.ConfigureMethod; options.AddAssemblyAndReferences(options.ConfigureMethod.Module.Assembly); } // TODO: are they used in all situation? // setup katana integration pipeline if (descriptor.GetDesignatedMethod <NuwaKatanaConfigurationAttribute>() != null) { options.AddAssemblyAndReferences(Assembly.Load("Microsoft.Owin.Host.SystemWeb")); options.UpdateWebConfig(config => { var method = descriptor.GetDesignatedMethod <NuwaKatanaConfigurationAttribute>(); config.AddAppSection( "owin:AppStartup", string.Format("{0}.{1}, {2}", method.DeclaringType.FullName, method.Name, method.DeclaringType.Assembly.GetName().Name)); }); } else if (EnableDefaultOwinWebApiConfiguration) { options.AddAssemblyAndReferences(Assembly.Load("Microsoft.Owin.Host.SystemWeb")); options.UpdateWebConfig(config => { config.AddAppSection( "owin:AppStartup", string.Format("{0}.{1}, {2}", typeof(WebBaseHostElement).FullName, "DefaultOwinWebApiConfiguration", typeof(WebBaseHostElement).Assembly.GetName().Name)); if (options.TraceWriterType != null) { config.AddAppSection( NuwaGlobalConfiguration.TraceWriterTypeKey, string.Format("{0}, {1}", options.TraceWriterType.FullName, options.TraceWriterType.Assembly.GetName().Name)); } if (options.ConfigureMethod != null) { config.AddAppSection( NuwaGlobalConfiguration.HttpConfigureKey, string.Format("{0}.{1}, {2}", options.ConfigureMethod.DeclaringType.FullName, options.ConfigureMethod.Name, options.ConfigureMethod.DeclaringType.Assembly.GetName().Name)); } }); } else { options.UpdateWebConfig(config => { config.AddAppSection( "owin:AutomaticAppStartup", "false"); }); } // update web.config if (descriptor.WebConfigMethod != null) { Action <WebConfigHelper> action = Delegate.CreateDelegate( typeof(Action <WebConfigHelper>), descriptor.WebConfigMethod) as Action <WebConfigHelper>; if (action != null) { options.UpdateWebConfig(action); } } // retrieve partial trust element options.UpdateWebConfig(webConfig => webConfig.ConfigureTrustLevel("Full")); var ramfarSetting = ConfigurationManager.AppSettings["runAllManagedModulesForAllRequests"]; if (ramfarSetting != null && string.Equals(ramfarSetting, "true", StringComparison.InvariantCultureIgnoreCase)) { options.UpdateWebConfig(webConfig => webConfig.AddRAMFAR(true)); } // Update deployment options if (descriptor.WebDeployConfigMethod != null) { descriptor.WebDeployConfigMethod.Invoke(null, new object[] { options }); } if (EnableGlobalAsax) { options.GenerateGlobalAsaxForCS(); } doAdditionalAssemblyAndREferences(); doAdditionalUpdateWebConfig(); return(options.ToDirectory()); }
public WebHostSetupFixture() { this.options = new TSetupOptionsProvider().GetSetupOptions(); this.VDirAddress = IISHelper.SetupIIS(this.options); }