public static void SetBasicAuth(this IISDeploymentParameters parameters, bool enabled = true) { parameters.EnableModule("BasicAuthenticationModule", "%IIS_BIN%\\authbas.dll"); parameters.AddServerConfigAction( element => { element .RequiredElement("system.webServer") .RequiredElement("security") .RequiredElement("authentication") .GetOrAdd("basicAuthentication") .SetAttributeValue("enabled", enabled); }); }
public static void SetWindowsAuth(this IISDeploymentParameters parameters, bool enabled = true) { parameters.EnsureSection("windowsAuthentication", "system.webServer", "security", "windowsAuthentication"); parameters.EnableModule("WindowsAuthenticationModule", "%IIS_BIN%\\authsspi.dll"); parameters.AddServerConfigAction( element => { var windowsAuthentication = element .RequiredElement("system.webServer") .RequiredElement("security") .RequiredElement("authentication") .GetOrAdd("windowsAuthentication"); windowsAuthentication.SetAttributeValue("enabled", enabled); var providers = windowsAuthentication.GetOrAdd("providers"); providers.GetOrAdd("add", "value", "Negotiate"); providers.GetOrAdd("add", "value", "NTLM"); }); }
public static void EnableFreb(this IISDeploymentParameters deploymentParameters, string verbosity, string folderPath) { if (!deploymentParameters.PublishApplicationBeforeDeployment) { throw new InvalidOperationException("Testing freb requires site to be published."); } deploymentParameters.EnableModule("FailedRequestsTracingModule", "%IIS_BIN%\\iisfreb.dll"); // Set the TraceFailedRequestsSection to listend to ANCM events deploymentParameters.ServerConfigActionList.Add( (element, _) => { var webServerElement = element .RequiredElement("system.webServer"); var addElement = webServerElement .GetOrAdd("tracing") .GetOrAdd("traceFailedRequests") .GetOrAdd("add"); addElement.SetAttributeValue("path", "*"); addElement.GetOrAdd("failureDefinitions") .SetAttributeValue("statusCodes", "200-999"); var traceAreasElement = addElement .GetOrAdd("traceAreas"); var innerAddElement = traceAreasElement.GetOrAdd("add", "provider", "WWW Server"); innerAddElement.SetAttributeValue("areas", "ANCM"); innerAddElement.SetAttributeValue("verbosity", verbosity); }); // Set the ANCM traceProviderDefinition to 65536 deploymentParameters.ServerConfigActionList.Add( (element, _) => { var webServerElement = element .RequiredElement("system.webServer"); var traceProviderDefinitionsElement = webServerElement .GetOrAdd("tracing") .GetOrAdd("traceProviderDefinitions"); var innerAddElement = traceProviderDefinitionsElement.GetOrAdd("add", "name", "WWW Server"); innerAddElement.SetAttributeValue("name", "WWW Server"); innerAddElement.SetAttributeValue("guid", "{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}"); var areasElement = innerAddElement.GetOrAdd("areas"); var iae = areasElement.GetOrAdd("add", "name", "ANCM"); iae.SetAttributeValue("value", "65536"); }); // Set the freb directory to the published app directory. deploymentParameters.ServerConfigActionList.Add( (element, contentRoot) => { var traceFailedRequestsElement = element .RequiredElement("system.applicationHost") .Element("sites") .Element("siteDefaults") .Element("traceFailedRequestsLogging"); traceFailedRequestsElement.SetAttributeValue("directory", folderPath); traceFailedRequestsElement.SetAttributeValue("enabled", "true"); traceFailedRequestsElement.SetAttributeValue("maxLogFileSizeKB", "1024"); }); }