从特定请求中删除New Relic .NET Agent RUM代码

时间:2013-09-18 09:05:42

标签: .net newrelic

我们正在使用.NET版本的New Relic。看起来好像在输出时,New Relic会解析输出以查看它是否包含任何</head>元素,并在其之前插入其<script type="text/javascript">var NREUMQ=...脚本。

我的问题是在一个特定的封闭源页面上有一行js读取......

document.write("<html><head></head><body></body></html>");

... New Relic然后把它变成......

document.write("<html><head><script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script></head><body></body></html>");

...由于New Relic代码未被转义,因此导致严重的头痛。

我想做的是告诉New Relic不要在这个特定的页面上注入代码,因为我无法编辑页面。

干杯!

这是修改后的代码,格式相同 - 为了您的观看乐趣(不是响应中的实际内容)....

document.write("<html><head><script type="text/javascript">
                var NREUMQ=NREUMQ||[];
                NREUMQ.push(["mark","firstbyte",new Date().getTime()]);
                </script></head><body></body></html>");

4 个答案:

答案 0 :(得分:3)

编辑2017-01-25
(新网址)


原始帖子
我收到了New Relic支持的答复。这是......

  

你好迈克尔,

     

这是一个很棒的问题!有一个非常直接的方式   完成你想做的事。

     

.Net Agent将javascript片段注入标题和   页脚的页脚发送给用户浏览器以测量页面加载   用户结束的时间。我们将此功能称为真实用户监控或   简称RUM。关于这的更多信息在这里:   https://newrelic.com/docs/features/how-does-real-user-monitoring-work

     

如果您希望在所有可以编辑的页面上完全禁用RUM   newrelic.config并更改此行:

<browserMonitoring autoInstrument="true"/>
     

到此:

<browserMonitoring autoInstrument="false"/>
     

您可以在单个页面上禁用RUM和/或手动指定位置   RUM页眉/页脚片段通过使用注入到页面中   .Net Agent API调用。要使用此库,请添加对该库的引用   NewRelic.Api.Agent.dll到你的项目。应该找到DLL   此文件夹:"%ProgramFiles%\New Relic\.NET Agent"

     

然后,您可以使用此API调用禁用特定页面上的RUM:

           

或者您可以手动将标头和脚注入您想要的位置   他们使用这些API调用:

     

答案 1 :(得分:1)

我今天遇到了同样的问题。我能够通过让Javascript在客户端上结合“他”和“广告”来解决这个问题。这可以防止New Relic RUM看到HEAD标记。

document.write("<html><he" + "ad></he" + "ad><body></body></html>");

答案 2 :(得分:0)

我只想添加Gerrard的答案..他的解决方案对我有用但我也不得不打破BODY标签.. New Relic足够周到,在我的BODY标签之后添加它自己的HEAD标签检测我原来的HEAD标签。

作为旁注 - 这个自动仪表在多个项目中给我带来了很多痛苦。

答案 3 :(得分:0)

对于这个问题,实际上有一个更简单的解决方案,在你的cshtml或aspx文件中添加一行代码:

NewRelic.Api.Agent.NewRelic.DisableBrowserMonitoring();