C# 如何使用IHttpActionResult接口从WebApi 2操作返回html文档?

C# 如何使用IHttpActionResult接口从WebApi 2操作返回html文档?,c#,html,.net,asp.net-web-api,C#,Html,.net,Asp.net Web Api,我需要构建一个html文档并在我的web api中返回它。网络和论坛上的所有可用答案都建议使用HttpResponseMessage。我希望通过IHttpActionResult实现这一点。以下是我到目前为止的情况: [ResponseType(typeof(HttpResponseMessage))] public async Task<IHttpActionResult> GetNotesViewModels() { var note =

我需要构建一个html文档并在我的web api中返回它。网络和论坛上的所有可用答案都建议使用HttpResponseMessage。我希望通过IHttpActionResult实现这一点。以下是我到目前为止的情况:

    [ResponseType(typeof(HttpResponseMessage))]
    public async Task<IHttpActionResult> GetNotesViewModels()
    {
        var note = await GetHtmlText();
        var response = new HttpResponseMessage();
        response.Content = new StringContent(note);
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");

        return Ok(ResponseMessage(response));
    }
[ResponseType(typeof(HttpResponseMessage))]
公共异步任务GetNotesViewModels()
{
var note=await GetHtmlText();
var response=新的HttpResponseMessage();
response.Content=新的StringContent(注);
response.Content.Headers.ContentType=新的MediaTypeHeaderValue(“文本/html”);
返回Ok(响应消息(响应));
}

我没有收到我想要的东西。这里缺少什么?

您可以实现自己的HtmlResult,如下所示(免费):

公共类HtmlActionResult:IHttpActionResult
{
公共HtmlActionResult(HttpRequestMessage请求,字符串内容)
{
请求=请求;
内容=内容;
}
公共字符串内容{get;private set;}
公共HttpRequestMessage请求{get;private set;}
公共任务执行同步(CancellationToken CancellationToken)
{
返回Task.FromResult(ExecuteResult());
}
公共HttpResponseMessageExecuteSult()
{
var response=新的HttpResponseMessage();
如果(!string.IsNullOrWhiteSpace(Content))
response.Content=newstringcontent(Content,Encoding.UTF8,“text/html”);
response.RequestMessage=请求;
返回响应;
}
}
然后像这样使用它:

   public async Task<IHttpActionResult> GetNotesViewModels()
    {
        var note = await GetHtmlText();
        return new HtmlActionResult(Request, note);
    }
public异步任务GetNotesViewModels()
{
var note=await GetHtmlText();
返回新的HtmlActionResult(请求、注释);
}

通过使用
Ok()
将您的响应包装在
NegotiatedContentResult
中,它将尝试将您的
HttpResponseMessage
序列化为json(或xml)。Web Api 2支持将
HttpResponseMessage
直接作为返回类型:只需使用它而不是
IHttpActionResult
,然后返回您的
response
对象。@FedericoDipuma非常好。工作!
   public async Task<IHttpActionResult> GetNotesViewModels()
    {
        var note = await GetHtmlText();
        return new HtmlActionResult(Request, note);
    }