我有一个 ASP .Net MVC 应用程序,它使用 Application Insights 进行遥测跟踪。从任何具有 localhost 的开发人员机器调试应用程序时,它工作正常,但是当部署到我们的主开发环境 Web 服务器时,不再跟踪 HTTP 请求。
其他所有内容,包括异常、依赖项、跟踪,都被正确跟踪。但 HTTP 请求不是。我怎样才能找到这个问题的原因?我不知道从哪里开始。
我们正在使用 Application Insights SDK 2.5.0.61767。配置文件在所有机器上都是相同的。不知道还有什么可能导致它。欢迎任何建议。
编辑:我注意到它也没有收集服务器响应时间、服务器请求和失败的请求。
我在 ApplicationInsights.config 文件中有以下模块配置:
<Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web">
<Handlers>
<!--
Add entries here to filter out additional handlers:
NOTE: handler configuration will be lost upon NuGet upgrade.
-->
<Add>System.Web.Handlers.TransferRequestHandler</Add>
<Add>Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.RequestDataHttpHandler</Add>
<Add>System.Web.StaticFileHandler</Add>
<Add>System.Web.Handlers.AssemblyResourceLoader</Add>
<Add>System.Web.Optimization.BundleHandler</Add>
<Add>System.Web.Script.Services.ScriptHandlerFactory</Add>
<Add>System.Web.Handlers.TraceHandler</Add>
<Add>System.Web.Services.Discovery.DiscoveryRequestHandler</Add>
<Add>System.Web.HttpDebugHandler</Add>
</Handlers>
</Add>
Run Code Online (Sandbox Code Playgroud) 我在我的程序中持有两个列表 - 一个主列表和另一个不断更新的临时列表.每隔一段时间,临时列表就会刷新到主列表中.
主列表是HashSet(对于无重复项),临时列表是List(用于索引功能).我打电话给后者冲进后者
HashSet<T>.UnionWith(List<T>)
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我发现重复项进入列表,但我认为这在HashSet中是不可能的.有人可以确认/纠正这个吗?我无法在MSDN中找到它.
可能重复:
最佳.NET内存和性能分析器?
我的C#程序是一个Web scraper,它广泛使用异步HttpWebRequests,Regex和HTML敏捷包.它是使用ThreadPool.QueueUserWorkItem方法的多线程.
它开始使用大约600,000 K的内存,最终攀升到超过1,000,000 K.
如何跟踪占用内存最多的内容并进行清理,以减少资源消耗?
谢谢
C# .Net 4.5
我有一个 ListView,它通过这种方法不断被不同的线程更新:
public void UpdateUI_List_SetRow(int rowNum, ListViewItem item)
{
lock (lock_List)
{
try
{
if (this.lstStatus.InvokeRequired)
lstStatus.Invoke(new MethodInvoker(() => lstStatus.Items[rowNum] = item));
else
lstStatus.Items[rowNum] = item;
}
catch (Exception ex)
{
ErrorLogging.Log(ex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在更新时不断闪烁。我已经尝试了 DoubleBuffered 修复(如何在更新单个 ListViewItem 的文本时防止 ListView 闪烁?)但它没有用。
抱歉,如果这是一个重复的帖子,但除了启用双缓冲之外,我找不到任何解决方案。
我有一个函数,从epoch返回秒:
public static string getEpochSeconds()
{
TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
var timestamp = t.TotalSeconds;
return timestamp.ToString();
}
Run Code Online (Sandbox Code Playgroud)
它输出,例如:1373689200.79987但是为了我的应用程序,我需要它输出一个小数位数 - 例如1373689200.799873.这怎么可能?
谢谢!
我想将 Application Insights 遥测数据记录到我自己的帐户和客户的帐户中。
使用 TelemetryClient 的多个实例将相同的数据记录到两个不同的 Application Insights 检测密钥是否存在任何问题?或者有更好的方法来做到这一点吗?
我需要这行Java代码:
Integer.toString(256 + (0xFF & arrayOfByte[i]), 16).substring(1)
Run Code Online (Sandbox Code Playgroud)
转换为C#,因为我不知道如何使用"0xFF".
编辑 这是完整的代码:
MessageDigest localMessageDigest = MessageDigest.getInstance("SHA-256");
localMessageDigest.update(String.format(Locale.US, "%s:%s", new Object[] { paramString1, paramString2 }).getBytes());
byte[] arrayOfByte = localMessageDigest.digest();
StringBuffer localStringBuffer = new StringBuffer();
for (int i = 0; ; i++)
{
if (i >= arrayOfByte.length)
return localStringBuffer.toString();
localStringBuffer.append(Integer.toString(256 + (0xFF & arrayOfByte[i]), 16).substring(1));
}
Run Code Online (Sandbox Code Playgroud) 当我在Java中运行以下代码时,我得到输出: [B@1ddcac5
Java代码
byte[] byteA = "test".getBytes("UTF-8");
System.out.println(String.valueOf(byteA));
Run Code Online (Sandbox Code Playgroud)
如果我尝试在C#中运行类似的代码,我只会得到: System.Byte[]
C#代码
Console.WriteLine(Encoding.UTF8.GetBytes("test"));
Run Code Online (Sandbox Code Playgroud)
如何在C#中获得与在Java中相同的输出?
谢谢