Coder Social home page Coder Social logo

taritsyn / webmarkupmin Goto Github PK

View Code? Open in Web Editor NEW
435.0 435.0 47.0 8.28 MB

The Web Markup Minifier (abbreviated WebMarkupMin) - a .NET library that contains a set of markup minifiers. The objective of this project is to improve the performance of web applications by reducing the size of HTML, XHTML and XML code.

License: Apache License 2.0

C# 96.64% HTML 3.36%
aspnet dotnet html markup minification minify xhtml xml

webmarkupmin's People

Contributors

alexrp avatar germanyesid avatar imclint21 avatar taritsyn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webmarkupmin's Issues

Cannot capture the exception from minify html

I got "Category: HTML_PARSING_ERROR" when using minify html.
Normally it works fine, but in this case the html content is not valid, so that I got this exception.
But the content of website is from a cms so that sometime the html content won't be valid.

So that I want to capture this type of exception, and if it happens, I want to use the original html content instead of the minified version. Or I want the library to ignore this case during minifying.

Can I do it now? Or can you give me an advice for this case?
Thanks,

Faced HTML_PARSING_ERROR while minifying

I am using WebMarkupMin extension and during HTML minification on release mode, I am facing an issue wherein i have used some code that conflicts with the minification process and returns an error that the

tag doesn't recognize the particular attribute.
So can i modify the extension to bypass a particular attribute. Or Even exclude the page from minification.

This is the code that is conflicting with the minification process.
<div v-if="IsEditMode" class="btn btn-border" style="margin-right:16px" @click="toggleReorder();" title="Reorder"> <asp:Literal ID="Literal1" runat="server" Text="<%$Resources:Resource,Reorder %>"></asp:Literal> </div>
Please guide me through this issue. Any help would be highly appreciated.

Please find the attached screen shot for Reference.
webmarkupminissue

Incompatible with DeveloperExceptionPageMiddleware (ASP.NET 5)

In my Startup.cs I have Configure method like this:

app.UseIISPlatformHandler();
app.UseStaticFiles();
app.UseDeveloperExceptionPage();
app.UseIdentity()
app.UseRequestLocalization(...);
app.UseWebMarkupMin();
app.UseMvc(...);

I use WebMarkupMin only for MVC content (because all static files are already compressed/minified), but I want to use DeveloperExceptionPageMiddleware (app.UseDeveloperExceptionPage()) earlier in pipeline, because I want it to handle exceptions in identity/auth/... middleware too.

With this config, if any exception occurs (in MVC) - server returns blank page and I see exception in console window from DeveloperExceptionPageMiddleware:

fail: Microsoft.AspNet.Diagnostics.DeveloperExceptionPageMiddleware[0]
An exception was thrown attempting to display the error page.
System.ArgumentException: Stream was not writable.
at System.IO.StreamWriter..ctor(Stream stream, Encoding encoding, Int32 bufferSize, Boolean leaveOpen)
at Microsoft.AspNet.Diagnostics.Views.BaseView.d__28.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNet.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext()

I guess this happens because WebMarkupMin already wrote compressed content (empty page?) into output response stream, and DeveloperExceptionPageMiddleware can't re-write this stream again.

Exception page shows successfully if I move UseDeveloperExceptionPage() after UseWebMarkupMin(), like this:

app.UseWebMarkupMin();
app.UseDeveloperExceptionPage();
app.UseMvc(...)

But I lose any details about exceptions in non-MVC middleware.

Skip minification on HTTP_PARSE_ERROR

Hi,

I am using minification in MVC5 project using attributes (ver. 2.3.0).
On some of the files we have HTML_PARSING_ERROR.
Desired behaviour is that minifier just skips such files rather than throwing an exception which results in 500.

There are two loggers available: null and exception.
I tried to remove exception logger but that what is below does not work:

<webMarkupMin xmlns="http://tempuri.org/WebMarkupMin.Configuration.xsd"> <core> <logging defaultLogger="NullLogger"> <loggers> <clear /> <add name="NullLogger" displayName="Null Logger" type="WebMarkupMin.Core.Loggers.NullLogger, WebMarkupMin.Core" /> </loggers> </logging> </core> </webMarkupMin>

Check for Content-Length in response headers

Note: This may or may not be specific to ASP.NET Core.

Currently, if middleware upstream sets the Content-Length header (i.e. StaticFiles), then usage of WebMarkupMin results in a 200, but no content. This is because the resulting content-size is no longer the same as reported by the header-value. My current resolution is to insert my own middleware to remove the header:

app.UseWebMarkupMin();

app.Use(async (context, next) =>
{
    await next();

    if (context.Response.Headers.ContainsKey("Content-Length"))
    {
        context.Response.Headers.Remove("Content-Length");
    }
});

app.UseStaticFiles();

A bit more info. is posted here.

Html Parsing Error. Message: Remain not closed conditional comment.

When using MinifyHtml or MinifyXhtml i'm getting the following error.

Server Error in '/' Application.
error html parser

Category: HTML_PARSING_ERROR
Message: Remain not closed conditional comment.

Using it in combination with Umbraco and MVC in a default controller.

public class DonutCacheController : RenderMvcController
{
    //[DonutOutputCache(Duration = 0, VaryByCustom="url;preview")]
    [CookieConsent]
    [CompressContent]
    [MinifyXhtml]
    [DonutOutputCache(CacheProfile = "CachSettings")]
    public override ActionResult Index(RenderModel model)
    {
        return base.Index(model);
    }        
}

It's probarly has to do someting with te picture element and IE9 if conditon statement in the html.
Source code html when the MinifyHtml is disabled.
homepage.html.txt

On some pages the error not occures.
textpage.html.txt

.NET Core minification not working for form HttpPost

I've followed instructions to implement AspNetCore1 2.3.0 into .NET Core web app. Minification works fine except for single scenario.

I've made a simple form that posts to controller, after the post page source isn't minified.

public class SampleController : Controller
{
    [HttpGet]
    public IActionResult Verify()
    {
        return View(); // Minified
    }

    [HttpPost]
    public IActionResult Verify(FoundersVerifyViewModel viewModel)
    {
        ModelState.AddModelError(string.Empty, "Form posted.");
        return View(); // No minification
    }
}

And the view

@Html.ValidationSummary()
<form asp-controller="Sample" asp-action="Verify" method="post" class="form-horizontal">
    <button type="submit" class="btn btn-default">Verify</button>
</form>

You can't notice this with "View Page Source" as it makes new request to the page, but it's apparent if your page displays differently minified/unminified or if you have comments in the html which after form post will appear in the developer tools.

<div>${{something}}</div> incorrectly minified

I've run into an issue with v1.1.0 using this with mustache.js style templates.

<html><head></head><body> <!-- some white space to remove --> <div>${{Price}}</div></body></html>

is turned into:

<html><head></head><body><div>{{{Price}}}/div></div></body></html>

I'm wondering if this is some other template style causing this, although I did not see this issue in 0.9.9. I'm using these settings:

new HtmlMinificationSettings { RemoveOptionalEndTags = false, MinifyEmbeddedCssCode = false, MinifyInlineCssCode = false, AttributeQuotesRemovalMode = WebMarkupMin.Core.HtmlAttributeQuotesRemovalMode.KeepQuotes };

Compression settings apparently not being respected

I'm using the package on my mvc web site.
We are using the controller attribute approach so we can have a better control on the minification.

[MinifyXhtml]
[CompressContent]
[AcceptVerbs(HttpVerbs.Get), NotRequireSsl]
[OutputCache(CacheProfile = "Home")]
public ActionResult Index()
...

To configure we are the following classes:

public class WebMarkupMinConfig
{
    public static void Configure(WebMarkupMinConfiguration configuration)
    {
        configuration.AllowMinificationInDebugMode = true;
        configuration.AllowCompressionInDebugMode = true;


        DefaultCssMinifierFactory.Current = new DebugMinifierFactory<KristensenCssMinifierFactory, KristensenCssMinifier>();
        DefaultJsMinifierFactory.Current = new DebugMinifierFactory<CrockfordJsMinifierFactory, CrockfordJsMinifier>();
        DefaultLogger.Current = new MinifierLogger();


        //Configurações de minificação de HTML
        HtmlMinificationManager.Current.GenerateStatistics = true;

        IHtmlMinificationManager htmlMinificationManager = HtmlMinificationManager.Current;
        HtmlMinificationSettings htmlMinificationSettings = htmlMinificationManager.MinificationSettings;
        htmlMinificationSettings.RemoveRedundantAttributes = false;
        htmlMinificationSettings.RemoveHttpProtocolFromAttributes = false;
        htmlMinificationSettings.RemoveHttpsProtocolFromAttributes = false;


        //Configurações de minificação de XHTML
        XhtmlMinificationManager.Current.GenerateStatistics = true;

        IXhtmlMinificationManager xhtmlMinificationManager = XhtmlMinificationManager.Current;
        XhtmlMinificationSettings xhtmlMinificationSettings = xhtmlMinificationManager.MinificationSettings;

        xhtmlMinificationSettings.RemoveRedundantAttributes = false;
        xhtmlMinificationSettings.RemoveHttpProtocolFromAttributes = false;
        xhtmlMinificationSettings.RemoveHttpsProtocolFromAttributes = false;
        xhtmlMinificationSettings.RemoveHtmlCommentsFromScriptsAndStyles = true;

        //Configurações de minificação de XML
        XmlMinificationManager.Current.GenerateStatistics = true;

        IXmlMinificationManager xmlMinificationManager = XmlMinificationManager.Current;
        XmlMinificationSettings xmlMinificationSettings = xmlMinificationManager.MinificationSettings;
        xmlMinificationSettings.CollapseTagsWithoutContent = true;


        // Configurações de compressão de conteúdo.
        //configuration.DisableCompression = true;
        IHttpCompressionManager httpCompressionManager = HttpCompressionManager.Current;
        httpCompressionManager.CompressorFactories = new List<ICompressorFactory> {
        new DebugCompressionFactory<DeflateCompressorFactory>(),
        new DebugCompressionFactory<GZipCompressorFactory>()
    };
    }
}


public class DebugMinifierFactory<TFactory, TMinifier> : ICssMinifierFactory, IJsMinifierFactory where TMinifier : ICodeMinifier
{
    private readonly log4net.ILog _log;

    private readonly TFactory _internalFactory;

    public DebugMinifierFactory()
    {
        _internalFactory = Activator.CreateInstance<TFactory>();
        _log = log4net.LogManager.GetLogger(this.GetType().Name);
        _log.Debug($"Created a new {this.GetType().Name} using {_internalFactory.GetType().Name}");
    }

    ICssMinifier ICssMinifierFactory.CreateMinifier()
    {
        _log.Debug($"Passed on ICssMinifier {this.GetType().Name}.CreateMinifier()");
        return new DebugMinifier<ICssMinifier>((((ICssMinifierFactory)_internalFactory).CreateMinifier()));
    }

    IJsMinifier IJsMinifierFactory.CreateMinifier()
    {
        _log.Debug($"Passed on IJsMinifier {this.GetType().Name}.CreateMinifier()");
        return new DebugMinifier<IJsMinifier>((((IJsMinifierFactory)_internalFactory).CreateMinifier()));
    }
}

public class DebugMinifier<TMinifier> : ICssMinifier, IJsMinifier, ICodeMinifier where TMinifier : ICodeMinifier
{
    private readonly log4net.ILog _log;


    private readonly TMinifier _internalMinifier;

    public bool IsInlineCodeMinificationSupported
    {
        get { return _internalMinifier.IsInlineCodeMinificationSupported; }
    }

    public DebugMinifier(TMinifier internalMinifier)
    {
        _internalMinifier = internalMinifier;
        _log = log4net.LogManager.GetLogger(this.GetType().Name);
        _log.Debug($"Created a new {this.GetType().Name} using {_internalMinifier.GetType().Name}");

    }

    public CodeMinificationResult Minify(string content, bool isInlineCode)
    {
        _log.Debug($"Passed on {this.GetType().Name}.{nameof(Minify)}(string,bool) and utilizing {_internalMinifier.GetType().Name}.");
        return _internalMinifier.Minify(content, isInlineCode);
    }

    public CodeMinificationResult Minify(string content, bool isInlineCode, Encoding encoding)
    {
        _log.Debug($"Passed on {this.GetType().Name}.{nameof(Minify)}(string,bool,Encoding) and utilizing {_internalMinifier.GetType().Name}.");
        return new CodeMinificationResult(content);
    }
}


public class DebugCompressionFactory<TFactory> : ICompressorFactory where TFactory : ICompressorFactory
{
    private readonly log4net.ILog _log;

    private readonly ICompressorFactory _internalFactory;

    public string EncodingToken
    {
        get
        {
            return _internalFactory.EncodingToken;
        }
    }

    public DebugCompressionFactory()
    {
        _internalFactory = Activator.CreateInstance<TFactory>();
        _log = log4net.LogManager.GetLogger(this.GetType().Name);
        _log.Debug($"Created a new {this.GetType().Name} using {_internalFactory.GetType().Name}");
    }

    public ICompressor CreateCompressor()
    {
        _log.Debug($"Passed on {this.GetType().Name}.{nameof(CreateCompressor)}()");
        return _internalFactory.CreateCompressor();
    }
}

public class DebugCompression : ICompressor
{
    private readonly log4net.ILog _log = log4net.LogManager.GetLogger(nameof(DebugCompression));

    private readonly ICompressor _internalCompressor;

    public string EncodingToken
    {
        get
        {
            return _internalCompressor.EncodingToken;
        }
    }

    public DebugCompression(ICompressor internalCompressor)
    {
        _internalCompressor = internalCompressor;
        _log.Debug($"Created a new {this.GetType().Name} using {_internalCompressor.GetType().Name}");

    }

    public Stream Compress(Stream stream)
    {
        _log.Debug($"Passed on {this.GetType().Name}.{nameof(Compress)}(Stream)");
        return _internalCompressor.Compress(stream);
    }
}

The idea of my debug wrapper classes are to discover when each method is called.
We are also using a logger class that implements your WebMarkupMin.Core.Loggers.ILogger interface.

Using this classes i got the loggers from the method execution of the minifiers but the compression methods are never called.

Here are the logs:

DebugMinifierFactory`2: 23.03.2017 15:38:17.9101 [1] DEBUG DebugMinifierFactory`2 - Created a new DebugMinifierFactory`2 using KristensenCssMinifierFactory
DebugMinifierFactory`2: 23.03.2017 15:38:17.9111 [1] DEBUG DebugMinifierFactory`2 - Created a new DebugMinifierFactory`2 using CrockfordJsMinifierFactory
DebugCompressionFactory`1: 23.03.2017 15:38:17.9232 [1] DEBUG DebugCompressionFactory`1 - Created a new DebugCompressionFactory`1 using DeflateCompressorFactory
DebugCompressionFactory`1: 23.03.2017 15:38:17.9241 [1] DEBUG DebugCompressionFactory`1 - Created a new DebugCompressionFactory`1 using GZipCompressorFactory
...
DebugCompressionFactory`1: 23.03.2017 15:38:53.0384 [6] DEBUG DebugCompressionFactory`1 - Passed on DebugCompressionFactory`1.CreateCompressor()
DebugMinifierFactory`2: 23.03.2017 15:38:53.0435 [6] DEBUG DebugMinifierFactory`2 - Passed on ICssMinifier DebugMinifierFactory`2.CreateMinifier()
DebugMinifier`1: 23.03.2017 15:38:53.0454 [6] DEBUG DebugMinifier`1 - Created a new DebugMinifier`1 using KristensenCssMinifier
DebugMinifierFactory`2: 23.03.2017 15:38:53.0474 [6] DEBUG DebugMinifierFactory`2 - Passed on IJsMinifier DebugMinifierFactory`2.CreateMinifier()
DebugMinifier`1: 23.03.2017 15:38:53.0494 [6] DEBUG DebugMinifier`1 - Created a new DebugMinifier`1 using CrockfordJsMinifier
DebugMinifier`1: 23.03.2017 15:38:53.1410 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1470 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1490 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1510 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1520 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1540 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1560 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1610 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1640 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1660 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1770 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1930 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1950 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.1990 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2010 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2040 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2046 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2056 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2076 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2096 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2106 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2116 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2126 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2136 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2146 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2166 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2196 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2216 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2236 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2251 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2261 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2271 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2286 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2341 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2478 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2488 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2508 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2518 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2549 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2598 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2638 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2688 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2708 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2738 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2768 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2788 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2808 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2838 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2881 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2923 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2933 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2943 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.2973 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3013 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3023 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3033 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3053 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3063 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3073 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3083 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3093 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3103 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3113 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3123 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3143 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3153 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3163 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3173 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3183 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3193 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3203 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3213 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3233 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3243 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3263 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3288 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3333 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3343 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3353 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3368 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3378 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3388 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3458 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3508 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3558 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3578 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3588 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3608 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3618 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3648 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3658 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3689 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3698 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3718 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3728 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3738 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3748 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3758 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3768 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3778 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3798 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3808 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3818 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3838 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3849 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3858 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3868 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3888 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3898 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3908 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3918 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3928 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3938 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3948 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3968 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3988 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.3998 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4007 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4017 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4027 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4037 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4047 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4067 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4077 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4087 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4097 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4117 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4127 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4137 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4147 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4157 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4167 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4187 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4227 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4237 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4252 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4262 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4282 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4297 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4318 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4332 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4337 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4352 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4367 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4382 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4392 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4404 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4424 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4444 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4444 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4454 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4464 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4484 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4494 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4504 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4514 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4524 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4544 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4574 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4584 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4594 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4604 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4624 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing KristensenCssMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4644 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4654 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4664 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
DebugMinifier`1: 23.03.2017 15:38:53.4674 [6] DEBUG DebugMinifier`1 - Passed on DebugMinifier`1.Minify(string,bool) and utilizing CrockfordJsMinifier.
MinifierLogger: 23.03.2017 15:38:53.5234 [6] INFO MinifierLogger - HTML_MINIFICATION_SUCCESS. Minification of the HTML code has been completed successfully. On file /
Statistics:
OriginalSize: 347306
OriginalGzipSize: 47921
MinifiedSize: 285408
MinifiedGzipSize: 43829
CompressionRatio: 82,18
CompressionGzipRatio: 91,46
SavedInBytes: 61898
SavedGzipInBytes: 4092
SavedInPercent: 17,82
SavedGzipInPercent: 8,54
MinificationDuration: 393

As you can see the statistics show me some gzip compression information but if i remove the [CompressContent] or even on the WebMarkupMinConfig set the configuration.DisableCompression = true; nothing changes.

What can we do here to really know if the compression is enabled or not.

The main idea here is that the app only make the minification, the compression will be done by the load balancer after the IIS has delivered the page.

Thanks in advance for the help.

Remove redundant attributes, except input

We use some CSS selectors like input[type=text] and these won't work with RemoveRedundantAttributes since the type=text is the redundant one. I fixed this by changing the CSS, but do you plan to make these definitions configurable?

When Use protected override void HandleUnknownAction(string actionName) ?

Hi

When Use
protected override void HandleUnknownAction(string actionName)
and call
Index(model).ExecuteResult(this.ControllerContext);

my attribute not work
[CompressContent]
[MinifyHtml]

also I register filtering like
filters.Add(new CompressContentAttribute());
filters.Add(new MinifyHtmlAttribute());
filters.Add(new MinifyXmlAttribute());

can you help me for fix issue?
I need compress and minify HandleUnknownAction .

thanks

Adding WebMarkupMin with a ServiceStack .Net Core enabled project fails

When adding WebMarkupMin to my project, I get a

NotSupportedException: Stream does not support writing.

System.NotSupportedException: Stream does not support writing.
   at System.IO.MemoryStream.SetLength(Int64 value)
   at WebMarkupMin.AspNetCore1.WebMarkupMinMiddleware.<Invoke>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__6.MoveNext()

image

The configure method:

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
      loggerFactory.AddConsole(Configuration.GetSection("Logging"));
      loggerFactory.AddDebug();
      if (env.IsDevelopment())
      {
        app.UseDeveloperExceptionPage();
      }
      else
      {
        app.UseExceptionHandler("/Home/Error");
      }

      app.UseStaticFiles();

      app.UseWebMarkupMin();

      app.UseServiceStack(new AppHost());

      app.UseMvc(routes =>
      {
        routes.MapRoute(
                  name: "default",
                  template: "{controller=Home}/{action=Index}/{id?}");
      });

Javascript with a less than sign

I'm surprised nobody has encountered this before, but I have with not only this minifier, but also the built in Microsoft.Ajax.Utilities version.

With the inline javascript minifier, if my javascript has a less than sign in it, which is pretty important in javascript, I get parse errors when the minifier hits. If I remove the less than sign from my inline script, or place it outside the call to the CrockfordJsMinifier, then everything is ok.

What I did was create an Html helper to call inside of my razor page, which calls the minifier. Nobody else has ran into this issue?

Filtering is not allowed

Running WebMarkupMin.AspNet4.Mvc v2.0.0-rc1 on Umbraco Cms 6.2.5 (https://www.nuget.org/packages/UmbracoCms/6.2.5) with MinifyHtmlAttribute/MinifyXmlAttribute/CompressContentAttribute enabled we're getting "Filtering is not allowed" on one or two actions.

What's interesting is the module appears to be working generally throughout the site, it's even been working on this action before a recent build (that included no related changes).

Full stack trace is below:

Server Error in '/' Application.

  Filtering is not allowed.

  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

  Exception Details: System.Web.HttpException: Filtering is not allowed.

  Source Error: 


  Line 3:      Layout = "_MyAccount.cshtml";
  Line 4:  }
  Line 5:  @Html.Action("TrackedItems", "MyAccount")

  Source File: x:\xxx\www\Views\TrackedItems.cshtml    Line: 5 

  Stack Trace: 


  [HttpException (0x80004005): Filtering is not allowed.]
     System.Web.HttpResponse.set_Filter(Stream value) +3468372
     System.Web.HttpResponseWrapper.set_Filter(Stream value) +14
     WebMarkupMin.AspNet4.Mvc.CompressContentAttribute.OnResultExecuted(ResultExecutedContext filterContext) +123
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +231
     System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +245
     System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +245
     System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +245
     System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +176
     System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +75
     System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +99
     System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
     System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
     System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14
     System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +16
     System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
     System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
     System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +16
     System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
     System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
     System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
     System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25
     System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +16
     System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
     System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
     System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
     System.Web.Mvc.<>c__DisplayClassa.<EndProcessRequest>b__9() +22
     System.Web.Mvc.<>c__DisplayClass4.<Wrap>b__3() +10
     System.Web.Mvc.ServerExecuteHttpHandlerWrapper.Wrap(Func`1 func) +53
     System.Web.Mvc.ServerExecuteHttpHandlerWrapper.Wrap(Action action) +64
     System.Web.Mvc.ServerExecuteHttpHandlerAsyncWrapper.EndProcessRequest(IAsyncResult result) +71
     System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) +1114

  [HttpException (0x80004005): Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'.]
     System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) +3450725
     System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage) +77
     System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm) +29
     System.Web.HttpServerUtilityWrapper.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm) +24
     System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues, TextWriter textWriter) +463
     System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues) +83
     System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper, String actionName, String controllerName) +10
     ASP._Page_Views_TrackedItems_cshtml.Execute() in x:\xxx\www\Views\TrackedItems.cshtml:5
     System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +198
     System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +104
     System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +78
     System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +234
     System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +107
     Umbraco.Core.Profiling.ProfilingView.Render(ViewContext viewContext, TextWriter writer) in d:\Dev\Umbraco6\src\Umbraco.Core\Profiling\ProfilingView.cs:24
     StackExchange.Profiling.MVCHelpers.WrappedView.Render(ViewContext viewContext, TextWriter writer) in c:\Code\github\SamSaffron\MiniProfiler\StackExchange.Profiling\MVCHelpers\WrappedView.cs:58
     System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +291
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
     System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +23
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +245
     System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +245
     System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +245
     System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +245
     System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +245
     System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +22
     System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +176
     System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +75
     System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +99
     System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
     System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
     System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14
     System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +16
     System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
     System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
     System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +16
     System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
     System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
     System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
     System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25
     System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +16
     System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
     System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
     System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
     System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9742689
     System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

  Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1038.0

Ability to provide your own whitespace removal strategy

Is it possible (through configuration or otherwise) to instruct the minifier to keep the new-line characters? To be more specific, to replace any series of whitespase that contain at least one new-line character with a single new-line character.

For instance, I'd like this:

<html>

  <head>
    <title>...</title>
  </head>

  <body>
     ...
  </body>

<html> 

to become:

<html>
<head>
<title>...</title>
</head>
<body>
...
</body>
<html> 

and not:

<html><head><title>...</title></head><body> ... </body><html>

I think html is still readable this way (personally i prefer that), without major compromises concerning the final output size.

Design changed after using WebMarkupMinConfiguration method

Hello all,

My design was changed after using WebMarkupMinConfig class

public static void Configure(WebMarkupMinConfiguration configuration)
{
       configuration.AllowMinificationInDebugMode = true;
        configuration.AllowCompressionInDebugMode = true;

        DefaultCssMinifierFactory.Current = new MsAjaxCssMinifierFactory();
        DefaultJsMinifierFactory.Current = new MsAjaxJsMinifierFactory();

        IHtmlMinificationManager htmlMinificationManager = HtmlMinificationManager.Current;
        HtmlMinificationSettings htmlMinificationSettings = htmlMinificationManager.MinificationSettings;
        htmlMinificationSettings.RemoveRedundantAttributes = true;
        htmlMinificationSettings.RemoveHttpProtocolFromAttributes = true;
        htmlMinificationSettings.RemoveHttpsProtocolFromAttributes = true;

        IXhtmlMinificationManager xhtmlMinificationManager = XhtmlMinificationManager.Current;
        XhtmlMinificationSettings xhtmlMinificationSettings = xhtmlMinificationManager.MinificationSettings;
        xhtmlMinificationSettings.RemoveRedundantAttributes = true;
        xhtmlMinificationSettings.RemoveHttpProtocolFromAttributes = true;
        xhtmlMinificationSettings.RemoveHttpsProtocolFromAttributes = true;

        IHttpCompressionManager httpCompressionManager = HttpCompressionManager.Current;
        httpCompressionManager.CompressorFactories = new List<ICompressorFactory>
            {
                new DeflateCompressorFactory(),
                new GZipCompressorFactory()
            };
}

with code in Global.asax

void Application_Start(object sender, EventArgs e)
 {
        WebMarkupMinConfig.Configure(WebMarkupMinConfiguration.Instance);
}

How i can solve this design error, plz?

error-design

WebMarkupMin breaks after updating to ASP.NET 2.0 Core

After updating to ASP.NET Core 2.0 the WebMarkupMin.AspNetCore1 library is unable to locate the method MediaTypeHeaderValue.TryParse and throws a MissingMethodException. However, when using IntelliSense in Visual Studio 2017 (15.3) I have no problem finding and using that method.

I am using version 2.4.0 of WebMarkupMin.AspNetCore1. I tried manually adding the System.Net.Http and Microsoft.Net.Http NuGet packages but that did not help. I also tried adding these settings to my csproj file that didn't help either.

<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

Here is a screenshot of the error page I get.

https://pbs.twimg.com/media/DHQr-ETXsAAJWYk.jpg:large

I hope there is a simple fix to this issue, as I love WebMarkupMin and I would really like to use it with ASP.NET Core 2.0.

Minification not working - config issue?

I'm sure this is something that I'm doing, however, implementing either master or page compiles and runs fine, but doesn't do minification. I plugged in the config and put it through global, but still nothing happens. Clues?

Removing Body and Head Closing Tags

Hi,
I'm using this excellent library for a asp.net core 1.1 project.

My Startup configuration are like below.
services.AddWebMarkupMin(opt => { opt.AllowMinificationInDevelopmentEnvironment = true; }).AddHtmlMinification(options => { options.MinificationSettings.RemoveRedundantAttributes = true; options.MinificationSettings.RemoveHttpProtocolFromAttributes = true; options.MinificationSettings.RemoveHttpsProtocolFromAttributes = true; });

Problem that I am facing is after the compression, there aren't any or tag.

HttpCompression Not Checking for Already Compressed Content

Another middleware exists in my pipeline that serves bundled/gziped script and css resources https://github.com/Shazwazza/Smidge

The middleware sets Content-Encoding = gzip since it knows the content it is delivering has already been gziped and cached to disk.

WebMarkupMin does not appear to check the response headers for existing compression before applying its own compression (defaulting to deflate).

I think that if the Content-Encoding header has already been set further down in the pipeline, the WebMarkupMin HttpCompression middleware should be skipped.

In this scenario, content decoding fails at the browser.

Thoughts?

NullReferenceException with FileContentResult in ASP.vNext RC1

I'm using WebMarkupMin.AspNet5 2.0.0-rc1 package in my ASP.vNext RC1 application.

When controller method returns File (not static file from UseStaticFiles, but file generated as result of controller action) - WebMarkupMinMiddleware fails with NullReferenceException.

Here is sample method body:

[Route("file.xml")]
public IActionResult GetFile()
{
    var xml = @"<xml version='1.0'><root><greeting>Hello, World</greeting></root>";
    var xmlBytes = System.Text.Encoding.UTF8.GetBytes(xml);
    return File(xmlBytes, "application/atom+xml", "feed.xml");
}

I created separate project with minimal code that demonstrates this error: WebMarkupMin.AspNet5.FileActionResultError

HTTP modules cause forms button do post back error

When HTTP modules HtmlMinificationModule used asp.net butons do post back not working. I think it's removing some codes.

The javaScript conseole gives "WebForm_DoPostBackWithOptions is not defined" error.

HtmlMinificationModule with conditions?

Hi there!

Is there a way of not minify on parts of the aspnet MVC 5 web?

The CMS manager for Episerver is not working properly when their html is been minified.

Is this configurable someway?

My config today:

<modules runAllManagedModulesForAllRequests="true"> <add name="HtmlMinificationModule" type="WebMarkupMin.AspNet4.HttpModules.HtmlMinificationModule, WebMarkupMin.AspNet4.HttpModules" /></modules>

DisableCompression And DisableMinification for MVC Action

I'm using Compression and Minifying thru GlobalFilters in MVC.

Is it possibile to disable Minifying for some Actions?

Like:
[WebMarkupMin (DisableCompression = true, DisableMinification = true )]
public ActionResult FooAction ()
{
return View();
}

Thanks
Alex

WebMarkupMin always minify even if disabled

Hello Taritsyn,

Happy New Year!
I am using the latest packages below in my ASP.NET MVC project.

WebMarkupMin.AspNet.Common 2.2.5.0
WebMarkupMin.AspNet4.Common 2.2.2.0
WebMarkupMin.AspNet4.Mvc 2.2.2.0
WebMarkupMin.Core 2.2.4.0
WebMarkupMin.MsAjax 2.2.0.0
WebMarkupMin.Yui 2.2.0.0

I usually configure minifer by adding the following line in Application_Start().

WebMarkupMinConfig.Configure(WebMarkupMinConfiguration.Instance);

Today, I noticed that the minifier always be executed even though I disabled it by removed the above line from Application_Start().

I tried several tests and found that minifier seems working by using the following default config setting.
https://github.com/Taritsyn/WebMarkupMin/blob/master/samples/WebMarkupMin.Sample.AspNet4.Mvc4/App_Start/WebMarkupMinConfig.cs

This symptom happens only for Release mode.
If you can reproduce the problem, please fix it.

Config source

Is it possible ?

 < webMarkupMin >
 < core configSource="Config\webMarkupMin.core.config" / >

...

Like

< system.webServer >

< httpErrors configSource="Config\system.webServer.httpErrors.config" / >

ASP.NET Core 2 middleware error handling

When the HTML is malformed leading to an HTML parse error inside the WebMarkupMin middleware, there is no way to gracefully handle it.

Repro steps

  1. Add the WebMarkupMin middleware and verify it minifies the response HTML
  2. Add an unclosed <br tag anywhere on the page
  3. Refresh the browser

Actual
The middleware throws an exception and the page is therefore not shown - but instead an error message is displayed if no custom error page is defined.

Expected
When an error occurs, simple just about the minification and serve the unminified. That way the page isn't broken and the user can see the content

Crash parsing invalid comment block

We have an invalid comment block as below (it was generated by our authoring system - the bug that caused it is being fixed!):

<!-->

It throws an ArgumentOutOfRangeException exception on this line (Length cannot be less than zero. Parameter name: length), because the comment block is invalid and it can't find the closing --> sequence.

It would be nice if this markup error was ignored, perhaps by adding a check to ensure that commentEndPosition > -1 before trying to find the comment text?

HttpCompression Algorithm Priority

Is there a way to set the compression algorithm priority? Right now it appears to default to deflate when accepted by the client, and I don't see a way to change that to gzip.

< Symbol triggers HTML_MARKUP_ERROR

This HTML triggers HTML_MARKUP_ERROR.

Line 494:
Line 495: …argin-top: 0; margin-bottom: 0">< 500mA<td nowrap style="…
----------------------------------------------------------^
Line 496:

Is there a way to render the page without minifying when there is an exception?

WebMarkupMin.Core is not add to the reference

Hello,
I am facing a problem that WebMarkupMin.Core is not add to the reference of my MVC project.

I could reproduce this problem below.
In VS2015 Community, create a simple MVC project.
Then, add these package by nuget.
WebMarkupMin.AspNet4.Mvc
WebMarkupMin.MsAjax
WebMarkupMin.Yui

Then, dependencies are also installed and all the installed packages are below.
WebMarkupMin.AspNet.Common 2.2.5.0
WebMarkupMin.AspNet4.Common 2.2.2.0
WebMarkupMin.AspNet4.Mvc 2.2.2.0
WebMarkupMin.MsAjax 2.2.0.0
WebMarkupMin.Yui 2.2.0.0
WebMarkupMin.Core 2.2.2.0

I have been using these packages in my other projects and they worked fine.

But, in the new MVC project I created today, only the
WebMarkupMin.Core
is not added to the reference in the project.
So, the web site could not be show with error.
In the nuget package manager window, WebMarkupMin.Core is listed properly in the installed package.
Then, I manually added it to the reference, but the web site could not be shown with another error.
If you can reproduce the problem, please fix it.

MinifyHtmlAttribute doesn't minify <script type="text/html">

Bug report

Expected behavior: HTML contents of scripts of type text/html should be minified.

Actual behavior: No minification happens.

As per the HTML5 spec, it's valid to have "text/html" as a script tag's content.

The type attribute gives the language of the script or format of the data. If the attribute is present, its value must be a valid MIME type. The charset parameter must not be specified. The default, which is used if the attribute is absent, is "text/javascript".

This is used in some sites, such as sway.com (search for type="text/html"> in the source).

HTML_PARSING_ERROR

Hi Taritsyn,
i got the following error

Exception Details: WebMarkupMin.Core.MarkupMinificationException: Category: HTML_PARSING_ERROR
Message: In the start tag <0> found invalid characters.
Line number: 431
Column number: 187
Source fragment:

Line 430: 
Line 431: …vElementList_ctl04_lblElementTarget"><0.5%</span>
----------------------------------------------------------^
Line 432: 

Stack Trace: 
[MarkupMinificationException: Category: HTML_PARSING_ERROR
Message: In the start tag <0> found invalid characters.
File: /santostechnicalIntegrity/
Line number: 435
Column number: 32
Source fragment:

Line 434:                                 <0.5%
Line 435:                             </td><td>
-----------------------------------------^
Line 436:                                 

]
   WebMarkupMin.Core.Loggers.ThrowExceptionLogger.Error(String category, String message, String filePath, Int32 lineNumber, Int32 columnNumber, String sourceFragment) +920
   WebMarkupMin.Core.GenericHtmlMinifier.Minify(String content, String fileContext, Encoding encoding, Boolean generateStatistics) +1383
   WebMarkupMin.AspNet4.WebForms.Components.MinifiedComponentBase.Render(HtmlTextWriter writer, Action`1 renderHandler) +562
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +150
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +249
   WebMarkupMin.AspNet4.WebForms.Components.MinifiedComponentBase.Render(HtmlTextWriter writer, Action`1 renderHandler) +259
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +150
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +249
   WebMarkupMin.AspNet4.WebForms.Components.MinifiedComponentBase.Render(HtmlTextWriter writer, Action`1 renderHandler) +259
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +150
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +249
   System.Web.UI.Page.Render(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +150
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5363

<0.5% is value i got from DB, which user input
it come from

<asp:GridView runat="server" ID="gvElementList">
...
<asp:TemplateField ShowHeader="true" HeaderText="Target" HeaderStyle-Width="200px">
<ItemTemplate>
<asp:Label runat="server" ID="lblElementTarget" Text='<%# Eval("ElementTarget") %>' />
</ItemTemplate>
</asp:TemplateField>
...
</asp:GridView>

this only happen when minification is enabled, is there any workaround about this?
I use XHtml minification in masterpage, without any custom configuration.

thanks for your help

Can sections of markup be skipped?

For the following Razor page, it chokes on the Razor syntax loop (@for ( ... ) { ... }) ...

<!DOCTYPE html>
<html lang="en-US">
<head>
    <title>Razor Page</title>
</head>
<body>
    <h1>Razor Page</h1>
    <div>
        @for (var i = 0; i < Model.People.Count; i++)
        {
            var person = Model.People[i];
            <p>Name: @person</p>
        }
    </div>
</body>
</html>

Found 1 error(s): Line 9, Column 28: During parsing of HTML-code error has occurred.

Is there some way I can safely escape that part of the markup (@for ( ... ) { ... }) so that the minifer will just skip it?

Using: WebMarkupMin.Core v2.4.0

Can not apply markup minification to text content, that was encoded in the 'deflate' format

I using WebMarkupMin: ASP.NET 4.X MVC - WebMarkupMin.AspNet4.Mvc (supports .NET Framework 4.0). IISExpress is running good but when publish IIS Server have an error. Please help me

System.InvalidOperationException: Can not apply markup minification to text content, that was encoded in the 'deflate' format.
at WebMarkupMin.AspNet4.Common.MarkupMinificationFilterStream.Close()
System.InvalidOperationException: Can not apply markup minification to text content, that was encoded in the 'deflate' format.
at WebMarkupMin.AspNet4.Common.MarkupMinificationFilterStream.Close()
at System.Web.HttpWriter.FilterIntegrated(Boolean finalFiltering, IIS7WorkerRequest wr)
at System.Web.HttpResponse.FilterOutput()
at System.Web.HttpApplication.CallFilterExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Html comment in head tag is being minified despite settings

Our website has an html comment inside the head tag that we'd like to preserve. I have tried setting RemoveHtmlComments and RemoveHtmlCommentsFromScriptsAndStyles to false, but this comment is still removed.

Minification settings:

var settings = new HtmlMinificationSettings(useEmptyMinificationSettings: true);
settings.SetProcessableScriptTypes(new List<string>() { "text/html" });
settings.PreserveCase = true;
settings.WhitespaceMinificationMode = WhitespaceMinificationMode.Safe;
settings.RemoveHtmlComments = false;
settings.RemoveHtmlCommentsFromScriptsAndStyles = false;

Unminified:

<head>
    <!-- MachineID: 171 -->
    <title>Home</title>
</head>

Minified:
<head><title>Home</title></head>

I can see html comments being preserved in the body, so it looks like those settings are merely not being applied when minifying the head tag. Is this expected behavior?

close tag </head>, </body>, </html> not found

Hello,
I am using WebMarkupMin.AspNet4.Mvc V2.2.0 to minify my ASP.NET MVC C# project.
I changed my web.config as same as the following page.
http://stackoverflow.com/questions/28380236/how-to-configure-html-minification-in-asp-net-mvc
Then I added [MinifyHtml] to the HomeController class.
The WebMarkupMin.AspNet4.Mvc minifier worked fine but I noticed that the three close tags
</head>, </body>, </html> are not added to the minified output.
This symptom occurred for any simple cshtml pages.
If you can reproduce the problem, please fix it.

MarkupMinificationException when having nested SVG element inside an SVG

When we try to minify HTML Code with having nested SVG elements inside another SVG the minification process stops with an exception:

An exception of type WebMarkupMin.Core.Minifiers.MarkupMinificationException occurred and was caught.
-------------------------------------------------------------------------------------------------------
06/09/2016 14:08:21
Type : WebMarkupMin.Core.Minifiers.MarkupMinificationException, WebMarkupMin.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=99472178d266584b
Message : Category: HTML_MINIFICATION_ERROR
Message: During minification of SVG-code error has occurred: "Tag <svg> was not closed.".
Source fragment:

Line 614:         <defs>
Line 615:             <svg id="sparziel-point" class="smartmeter-vertrag-wrapper__svg--sparziel__point-wrapper" …
----------------------^
Line 616:                 <circle r="8px" cx="0" cy="-2" style="fill: white; stroke-width: 4px; stroke: #f90;" clas…


Source : WebMarkupMin.Core
Help link : 
Data : System.Collections.ListDictionaryInternal
TargetSite : Void Error(System.String, System.String, System.String, Int32, Int32, System.String)
HResult : -2146233088
Stack Trace :    bei WebMarkupMin.Core.Loggers.ThrowExceptionLogger.Error(String category, String message, String filePath, Int32 lineNumber, Int32 columnNumber, String sourceFragment)
   bei WebMarkupMin.Core.Minifiers.GenericHtmlMinifier.ProcessEmbeddedSvgContent(MarkupParsingContext context, String svgContent)
   bei WebMarkupMin.Core.Minifiers.GenericHtmlMinifier.TextHandler(MarkupParsingContext context, String text)
   bei WebMarkupMin.Core.Parsers.HtmlParser.ProcessEmbeddedCode()
   bei WebMarkupMin.Core.Parsers.HtmlParser.Parse(String content)
   bei WebMarkupMin.Core.Minifiers.GenericHtmlMinifier.Minify(String content, String fileContext, Encoding encoding, Boolean generateStatistics)
   bei WebMarkupMin.Web.Filters.MarkupMinificationFilterStreamBase`1.Close()
   bei System.Web.HttpWriter.FilterIntegrated(Boolean finalFiltering, IIS7WorkerRequest wr)
   bei System.Web.HttpResponse.FilterOutput()
   bei System.Web.HttpApplication.CallFilterExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   bei System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

The HTML snippet which is causing the exception is:

<svg width="100%" viewBox="0 0 290 150" preserveAspectRatio="xMidYMin" class="some-class">
                    <desc>some description</desc>
                    <defs>
                        <mask id="inner-arc">
                            <circle class="chart__svg__circle" cx="145" cy="150" r="96" />
                        </mask>
                        <mask id="outer-arc">
                            <circle class="chart__svg__circle" cx="145" cy="150" r="130" />
                        </mask>
                    </defs>
                    <rect transform="rotate( @Model.PrognostizierterVerbrauchWinkel 145 150 )" enbw:data="rotate( @Model.PrognostizierterVerbrauchWinkel 145 150 )" x="0" y="0" mask="url(#inner-arc)" class="chart__svg__fill--basic rotatable_js" width="290" height="150" />
                    <rect transform="rotate( @Model.AktuellerVerbrauchWinkel 145 150 )" enbw:data="rotate( @Model.AktuellerVerbrauchWinkel 145 150 )" mask="url(#outer-arc)" class="chart__svg__fill--ht rotatable_js" width="290" height="150" x="0" y="0" />
 </svg>

If you need any further information, please let me know.
Thanks for taking your time, I really appreciate!

An unhandled exception has occurred.

While I agree, this appears to be malformed html/output; the package should not throw an exception and provide a yellow screen of death, instead it should simply not minify things. Here is the stack trace

Exception information:
Exception type: MarkupMinificationException
Exception message: Category: JS_MINIFICATION_ERROR
Message: Unterminated string literal.
File: /a/us-tx/climbing/top-4-climbing-spots-in-austin/
Line number: 2001
Column number: 11
Source fragment:

Line 2001: <script>
---------------------^

at WebMarkupMin.Core.Loggers.ThrowExceptionLogger.Error(String category, String message, String filePath, Int32 lineNumber, Int32 columnNumber, String sourceFragment)
at WebMarkupMin.Core.GenericHtmlMinifier.ProcessEmbeddedScriptContent(MarkupParsingContext context, String content, String contentType)
at WebMarkupMin.Core.GenericHtmlMinifier.EmbeddedCodeHandler(MarkupParsingContext context, String code)
at WebMarkupMin.Core.Parsers.HtmlParser.ProcessEmbeddedCode()
at WebMarkupMin.Core.Parsers.HtmlParser.Parse(String content)
at WebMarkupMin.Core.GenericHtmlMinifier.Minify(String content, String fileContext, Encoding encoding, Boolean generateStatistics)
at WebMarkupMin.AspNet4.Common.MarkupMinificationFilterStream.Close()
at ClientDependency.Core.Module.ResponseFilterStream.Close() in X:\Projects\ClientDependency\ClientDependency\ClientDependency.Core\Module\ResponseFilterStream.cs:line 313
at System.Web.HttpWriter.FilterIntegrated(Boolean finalFiltering, IIS7WorkerRequest wr)
at System.Web.HttpResponse.FilterOutput()
at System.Web.HttpApplication.CallFilterExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Perfomance is very slow when a HTML comment is inside a JavaScript block

I've mistakenly placed a HTML comment inside a JavaScript block that caused the time to load a page to increase from 200-300 ms to 6-7 seconds. Besides this, that block contained a quiet large JSON array, but removing that comment did the perf fix.

Obviously the comment shouldn't have been there, but I still think it is an issue if this causes such a drop in the load time.

sitemap.xml problem asp.net MVC

When there is a problem with the sitemap.xml file. instead of the xml file we get a strange value. When you turn off the compression everything returns to normal.
WebMarkupMin.AspNet4.Mvc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.