Click here to Skip to main content
12,885,163 members (33,412 online)
Rate this:
Please Sign up or sign in to vote.
See more: C# HTML
Using System.Web.Http.SelfHost etc. how can I send a html page?

Currently, in Google Chrome it comes through as text. I cannot find how to change the header to text/html, and I do not know whether that will fix it.

I have tried a number of variations of the attached without success.

The Episode data comes through to the browser in Google Chrome Browser OK as Json, but in IE it asks whether I want to (O)pen or (S)ave it.

I want to send the html from RAM, not disk.

Error-handling omitted for brevity.

Code as follows :-
 using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Net.Http;
    using System.Net.Http.Formatting;
    using System.Web.Http;
    using System.Web.Http.SelfHost;
    namespace Console015
        class Program
            static void Main(string[] args)
                HttpSelfHostServer server = null;
                using (StreamReader reader01 = new StreamReader("test01.html"))
                    LoginController.sPage = reader01.ReadToEnd();
                String sUrl = "http://localhost:8080";
                var serverConfig = new HttpSelfHostConfiguration(sUrl);
                serverConfig.Formatters.Insert(0, new JsonMediaTypeFormatter());
                    name: "DefaultApiRoute",
                    routeTemplate: "endpoints/{controller}",
                    defaults: null
                server = new HttpSelfHostServer(serverConfig);
                Console.WriteLine("Listening At : " + sUrl + "/endpoints/episode");
        public class LoginController : ApiController
            public static string sPage = string.Empty;
            public HttpResponseMessage GetLoginPage()
                // Create a 200 response.
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK)
                    Content = new StringContent(sPage)
                Console.WriteLine("Returning Login Page");
                return response;
        public class Episode
            public int Id { get; set; }
            public string Name { get; set; }
            public string ReleasedOn { get; set; }
        public class EpisodeController : ApiController
            public IList<Episode> GetAllEpisodes()
                return new List<Episode>
                    new Episode {Id = 1, Name = "Episode 1", ReleasedOn =     DateTime.Now.AddDays(10).ToShortDateString()},
                    new Episode {Id = 2, Name = "Episode 2", ReleasedOn =     DateTime.Now.AddDays( -5 ).ToShortDateString()},
                    new Episode {Id = 3, Name = "Episode 3", ReleasedOn = DateTime.Now.AddDays( -3 ).ToShortDateString()},
                    new Episode {Id = 4, Name = null, ReleasedOn = DateTime.Now.AddDays( 0 ).ToShortDateString()},

The HTML test data is :
 <!DOCTYPE html>
        <h1>My First Heading</h1>
        <p>My first paragraph.</p>
Posted 4-Oct-12 19:34pm
Updated 4-Oct-12 19:35pm

1 solution

Rate this: bad
Please Sign up or sign in to vote.

Solution 1

The answer appears to be :
response.Content.Headers.ContentType.MediaType = "text/html";

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web02 | 2.8.170424.1 | Last Updated 5 Oct 2012
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100