返回 HttpResponseMessage 并且配置了 Application Insights 时,WebAPI 响应永远不会完成
WebAPI Response never completes when returning HttpResponseMessage and Application Insights is configured
我有一个 MVC5/WebAPI2 应用程序,它在我创建 Web 项目后启用了 Application Insights。
return 对象(例如字符串、模型对象)按预期 return 编辑的 WebApi 方法 - 序列化为 JSON 或 XML。
public class TestController : ApiController
{
[HttpGet]
[AllowAnonymous]
async public Task<HttpResponseMessage> ReadString(int id) {
HttpResponseMessage response = Request.CreateResponse();
string str;
using (HttpClient client = new HttpClient()) {
Uri uri = new Uri("http://someurl.com/resource.rss");
str = await client.GetStringAsync(uri);
}
response.Content = new StringContent(str);
response.Content.Headers.ContentLength = str.Length;
return response;
}
}
当我创建一个 return 是 HttpResponseMessage 的操作时,我注意到浏览器中出现了一个奇怪的行为(使用 Chrome 和 IE 进行了测试)。具体来说,我的内容已 return 发送到浏览器,但 "busy" 指示器一直在旋转,直到我按下停止按钮或停止网络服务器(Visual Studio 2013)。
我已验证上述方法在没有 Application Insights 的 Web 应用程序中按预期工作。具体来说,一旦数据被 return 发送到浏览器,响应就结束了。当使用 Application Insights 将以下方法添加到新创建的应用程序时,会遇到前面描述的行为。
有什么想法吗?
这是由在 ASP.NET 请求管道中抛出的 NullReferenceException
引起的。 Microsoft.ApplictionInsights.Web 包正在处理触发问题的 HttpApplication.PreSendRequestHeaders 事件。在即将发布的 0.17 版本中,我们更改了 Application Insights 代码以不再处理此事件,您应该不会再看到此问题。
我有一个 MVC5/WebAPI2 应用程序,它在我创建 Web 项目后启用了 Application Insights。
return 对象(例如字符串、模型对象)按预期 return 编辑的 WebApi 方法 - 序列化为 JSON 或 XML。
public class TestController : ApiController
{
[HttpGet]
[AllowAnonymous]
async public Task<HttpResponseMessage> ReadString(int id) {
HttpResponseMessage response = Request.CreateResponse();
string str;
using (HttpClient client = new HttpClient()) {
Uri uri = new Uri("http://someurl.com/resource.rss");
str = await client.GetStringAsync(uri);
}
response.Content = new StringContent(str);
response.Content.Headers.ContentLength = str.Length;
return response;
}
}
当我创建一个 return 是 HttpResponseMessage 的操作时,我注意到浏览器中出现了一个奇怪的行为(使用 Chrome 和 IE 进行了测试)。具体来说,我的内容已 return 发送到浏览器,但 "busy" 指示器一直在旋转,直到我按下停止按钮或停止网络服务器(Visual Studio 2013)。
我已验证上述方法在没有 Application Insights 的 Web 应用程序中按预期工作。具体来说,一旦数据被 return 发送到浏览器,响应就结束了。当使用 Application Insights 将以下方法添加到新创建的应用程序时,会遇到前面描述的行为。
有什么想法吗?
这是由在 ASP.NET 请求管道中抛出的 NullReferenceException
引起的。 Microsoft.ApplictionInsights.Web 包正在处理触发问题的 HttpApplication.PreSendRequestHeaders 事件。在即将发布的 0.17 版本中,我们更改了 Application Insights 代码以不再处理此事件,您应该不会再看到此问题。