Make Deployers handle ANCM V1 and V2 (#1407) (#1409)

This commit is contained in:
Justin Kotalik 2018-05-03 13:49:21 -07:00 committed by GitHub
parent 10a4b84061
commit fb08967c9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 4 deletions

View File

@ -0,0 +1,11 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNetCore.Server.IntegrationTesting
{
public enum ANCMVersion
{
AspNetCoreModule,
AspNetCoreModuleV2
}
}

View File

@ -120,6 +120,12 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
public HostingModel HostingModel { get; set; }
/// <summary>
/// When using the IISExpressDeployer, determines whether to use the older or newer version
/// of ANCM.
/// </summary>
public ANCMVersion ANCMVersion { get; set; } = ANCMVersion.AspNetCoreModule;
/// <summary>
/// Environment variables to be set before starting the host.
/// Not applicable for IIS Scenarios.

View File

@ -106,7 +106,6 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
// Pass on the applicationhost.config to iis express. With this don't need to pass in the /path /port switches as they are in the applicationHost.config
// We take a copy of the original specified applicationHost.Config to prevent modifying the one in the repo.
if (serverConfig.Contains("[ANCMPath]"))
{
// We need to pick the bitness based the OS / IIS Express, not the application.
@ -166,8 +165,10 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
if (DeploymentParameters.HostingModel == HostingModel.InProcess)
{
ModifyWebConfigToInProcess();
ModifyAspNetCoreSectionInWebConfig(key: "hostingModel", value: "inprocess");
}
ModifyHandlerSectionInWebConfig(key: "modules", value: DeploymentParameters.ANCMVersion.ToString());
var parameters = string.IsNullOrWhiteSpace(DeploymentParameters.ServerConfigLocation) ?
string.Format("/port:{0} /path:\"{1}\" /trace:error", uri.Port, contentRoot) :
@ -319,13 +320,22 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
// Transforms the web.config file to include the hostingModel="inprocess" element
// and adds the server type = Microsoft.AspNetServer.IIS such that Kestrel isn't added again in ServerTests
private void ModifyWebConfigToInProcess()
private void ModifyAspNetCoreSectionInWebConfig(string key, string value)
{
var webConfigFile = $"{DeploymentParameters.PublishedApplicationRootPath}/web.config";
var config = XDocument.Load(webConfigFile);
var element = config.Descendants("aspNetCore").FirstOrDefault();
element.SetAttributeValue("hostingModel", "inprocess");
element.SetAttributeValue(key, value);
config.Save(webConfigFile);
}
private void ModifyHandlerSectionInWebConfig(string key, string value)
{
var webConfigFile = $"{DeploymentParameters.PublishedApplicationRootPath}/web.config";
var config = XDocument.Load(webConfigFile);
var element = config.Descendants("handlers").FirstOrDefault().Descendants("add").FirstOrDefault();
element.SetAttributeValue(key, value);
config.Save(webConfigFile);
}
}
}