C# 返回HttpResponseMessage时,Web API响应永远不会完成

C# 返回HttpResponseMessage时,Web API响应永远不会完成,c#,.net,asp.net-web-api,asp.net-web-api2,C#,.net,Asp.net Web Api,Asp.net Web Api2,类似于,当从Web API返回手动格式化的html时,HttpResponseMessage永远不会完成。所有内容都正确传输,但响应未关闭,浏览器加载轮仍在旋转 区别在于我没有使用应用程序洞察 public async Task<HttpResponseMessage> GetHtml(string id) { var asset = await ... var builder = new StringBuilder(); builder.Append("&

类似于,当从Web API返回手动格式化的html时,
HttpResponseMessage
永远不会完成。所有内容都正确传输,但响应未关闭,浏览器加载轮仍在旋转

区别在于我没有使用应用程序洞察

public async Task<HttpResponseMessage> GetHtml(string id)
{
    var asset = await ...

    var builder = new StringBuilder();
    builder.Append("<!DOCTYPE HTML>");
    // ...

    return new HttpResponseMessage
    {
        StatusCode = HttpStatusCode.OK,
        Content = new StringContent(builder.ToString(), Encoding.UTF8, "text/html")
    };
}
我不知道这是为什么,所以没有把它作为一个答案

更新2


当删除用于获取db记录的存储库调用并仅返回模拟html文档时,http响应将正确关闭。没有引发异常,并且正确检索数据库记录。依赖项由Unity解决。

与链接问题的答案类似,在处理请求时,是否有任何异常从Web API应用程序抛出?(您可以在输出窗口中看到抛出的异常。)没有异常,但我注意到它通常发生在来自同一浏览器选项卡的第二个请求上,即刷新。控制器操作完成并返回。线程退出代码为259“仍然处于活动状态”。当我返回
IHttpActionResult
时,它工作正常,但内容类型当然是错误的。您能否在请求挂起时中断调试器,并尝试从调用堆栈中确定它卡在管道的哪个阶段?“代码未运行”。返回后,但浏览器仍在旋转。可能是缓存或标头问题?使用MediaFormatter时,这不是问题,请参阅上面的更新。
return Request.CreateResponse(HttpStatusCode.OK, builder.ToString(), new HTMLFormatter(), new MediaTypeHeaderValue("text/html"));