Ejemplo n.º 1
0
        private static void EnablePreload(IISDeploymentParameters baseDeploymentParameters)
        {
            baseDeploymentParameters.EnsureSection("applicationInitialization", "system.webServer");
            baseDeploymentParameters.ServerConfigActionList.Add(
                (config, _) => {
                config
                .RequiredElement("system.applicationHost")
                .RequiredElement("sites")
                .RequiredElement("site")
                .RequiredElement("application")
                .SetAttributeValue("preloadEnabled", true);
            });

            baseDeploymentParameters.EnableModule("ApplicationInitializationModule", "%IIS_BIN%\\warmup.dll");
        }
    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");
        });
    }
        private static void Configure(IISDeploymentParameters deploymentParameters)
        {
            // Enable dynamic compression
            deploymentParameters.ServerConfigActionList.Add(
                (element, _) => {
                var webServerElement = element
                                       .RequiredElement("system.webServer");

                webServerElement
                .GetOrAdd("urlCompression")
                .SetAttributeValue("doDynamicCompression", "true");

                webServerElement
                .GetOrAdd("httpCompression")
                .GetOrAdd("dynamicTypes")
                .GetOrAdd("add", "mimeType", "text/*")
                .SetAttributeValue("enabled", "true");
            });

            deploymentParameters.EnableModule("DynamicCompressionModule", "%IIS_BIN%\\compdyn.dll");
        }
    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");
        });
    }