2016-02-12 42 views
5

我最近开始托管我的第一个生产应用程序。我继续并激活了应用程序洞察力,我认为这有很大的价值。但是,我从开发者那里获得统计信息,例如日志记录来自localhost:xxxx的条目。我相信有一种方法可以关闭它。任何人都可以给我一些指点吗?如何忽略Azure应用程序洞察中的localhost

回答

7
  1. 可以筛选出已收集遥测您使用F5得到UI,因为它有物业IsDeveloperMode =真
  2. 你可以有web.config中转型,从web.debug.config和叶删除应用模块启示它只在web.release.config中(如果您只有自动收集的属性)
  3. 您可以从配置中删除检测密钥并将其仅设置为代码中的发布版本:TelemetryConfiguration.Active.InsrumentationKey =“MyKey”(如果您不要在调试中提供iKey,您仍然可以在VS 2015中看到AI集线器中的所有遥测)
  4. 您可以使用differen牛逼iKeys用于调试和发布再次在代码中设置它
  5. 您可以完全调试通过设置禁用ApplicationInsights TelemetryConfiguration.Active.DisableTelemetry =真
+0

我说在我的FilterConfig.cs下面几行代码: '#如果RELEASE TelemetryConfiguration .Active.DisableTelemetry = true;#endif' 阿纳斯塔西娅,你认为这会奏效吗? – chesco

+0

如果您有一个定义RELEASE的标准应用程序,并且您没有在代码中创建任何自定义TelemetryConfiguration,那么将会显示yes。 DisableTelemetry适用于每个遥测配置。自动收集仅使用TelemetryConfiguration.Active。此外,我不知道如果您在FilterConfig中的代码已达到之前跟踪smth(例如一些跟踪)。如果是的话,那些遥测显然会被发送。 –

8

您还可以,如果你使用的过滤器使用TelemetryProcessor(本地主机遥测最新版本(Application Insights Web SDK的预发布版本)。这是一个例子。这个类添加到项目中:

public class LocalHostTelemetryFilter : ITelemetryProcessor 
{ 
    private ITelemetryProcessor next; 
    public LocalHostTelemetryFilter(ITelemetryProcessor next) 
    { 
     this.next = next; 
    } 

    public void Process(ITelemetry item) 
    { 
     var requestTelemetry = item as RequestTelemetry; 
     if (requestTelemetry != null && requestTelemetry.Url.Host.Equals("localhost", StringComparer.OrdinalIgnoreCase)) 
     { 
      return; 
     } 
     else 
     { 
      this.next.Process(item); 
     } 
    } 
} 

,然后注册它ApplicationInsights.config:

<TelemetryProcessors> 
    <Add Type="LocalhostFilterSample.LocalHostTelemetryFilter, LocalHostFilterSample"/> 
</TelemetryProcessors> 
+0

这是更好的方式,因为我可以使用Selenium发送自定义标题,然后此代码可以忽略我的测试。是的,我知道,我应该有一个专门的测试环境..当然。但至少我正在测试..:D – ppumkin