C# 返回HttpResponseMessage时,Web API响应永远不会完成
类似于,当从Web API返回手动格式化的html时,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("&
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"));