Endring av rå html utgang fra MVC 6

stemmer
2

Programtillegg som webmarkupmin modifisere HTTP-responsen kroppen fra HTTPContext hjelp av en HTTP-modul som dette:

protected override void ProcessContent(HttpContext context)
    {
        HttpRequest request = context.Request;
        HttpResponse response = context.Response;
        Encoding encoding = response.ContentEncoding;
        string contentType = response.ContentType;

        if (request.HttpMethod == GET && response.StatusCode == 200
            && contentType == ContentType.Html
            && context.CurrentHandler != null)
        {
            var htmlMinifier = WebMarkupMinContext.Current.Markup.CreateHtmlMinifierInstance();
            response.Filter = new HtmlMinificationFilterStream(response.Filter, htmlMinifier,
                request.RawUrl, encoding);

            if (WebMarkupMinContext.Current.IsCopyrightHttpHeadersEnabled())
            {
                CopyrightHelper.AddHtmlMinificationPoweredByHttpHeader(response);
            }
        }
    }

Hvordan vil du endre rå HTTP respons kroppen etter ønske med den nye HTTP Pipeline i ASP.NET fem?

Publisert på 12/12/2014 klokken 21:54
kilden bruker
På andre språk...                            


1 svar

stemmer
4

Jeg tror at følgende eksempel vil hjelpe deg på det. Jeg tror i ASP.net 5 må vi følge OWIN stil rørledningen.

Her er noen eksempelkode fra Startup.cs

 app.Use(async (context, next) =>
    {
        // Wrap and buffer response body.
        // Expect built in support for this at some point. The current code is prerelease
        var buffer = new MemoryStream();
        var stream = context.Response.Body;
        context.Response.Body = buffer;

        await next();

        if (context.Response.StatusCode == 200 && 
            context.Response.ContentType.Equals("application/html", StringComparison.OrdinalIgnoreCase))
        {
            buffer.Seek(0, SeekOrigin.Begin);
            var reader = new StreamReader(buffer);
            string responseBody = await reader.ReadToEndAsync();                    
            MemoryStream msNew = new MemoryStream();
            using (StreamWriter wr = new StreamWriter(msNew))
            {
                 wr.WriteLine("This is my new content");
                 wr.Flush();
                 msNew.Seek(0, SeekOrigin.Begin);
                 await msNew.CopyToAsync(stream);
            }
        }
    });


    // Add MVC to the request pipeline.
    app.UseMvc(routes =>
    {
         routes.MapRoute(
         name: "default",
         template: "{controller}/{action}/{id?}",
         defaults: new { controller = "Home", action = "Index" });                    
    });
Svarte 12/12/2014 kl. 23:50
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more