I know this is an old post, but for a service that will only be hosted in IIS, here is an easy way to return html:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public Stream getHtml()
{
// get the html
var html = DoSomethingToGetHtml(); //Not a built-in .Net method ;)
// we want our result interpreted as plain html
WebOperationContext.Current.OutgoingResponse.ContentType = "text/html; charset=utf-8";
// create a stream from our html because trying to return a string adds an extra header tag
// to the response. Returning a stream returns the html by itself
var result = new MemoryStream(Encoding.UTF8.GetBytes(html));
// return the result
return result;
}
This code requires the following in the web.config hosting the service:
...
In the configuration for the service, set behaviorConfiguration="webHttpEnabled".
Returning html in this way limits the reusability of the service a bit, but it's an easy way to solve the problem if you're reasonably sure the service will always be hosted in IIS.