小编Mar*_*ark的帖子

当.NET不在垃圾收集(GC)中时,如何捕获.NET进程的进程内存转储

当捕获转储文件并对其进行分析时(例如在WinDbg中),我经常会收到警告:数据可能不准确,或者命令可能无法访问,因为当收集转储文件时,进程位于GC的中间.

在进行内存分析时,我们经常这样做是因为进程中的内存很高而且内存压力很高,我猜这会强制.NET到GC.

如何在GC期间避免转储?有没有办法知道何时可以安全地捕获转储文件?

.net c# garbage-collection memory-leaks dump

7
推荐指数
1
解决办法
2577
查看次数

如何分析.NET应用程序的网络利用率

我有一个.NET Windows服务,它可以提供很多网络魔法(WMI,Ping等等 - 列表很长).我想尽可能简单明了地分析应用程序使用的带宽以及代码中的每个部分.

有没有可以帮助我做到这一点的工具?例如,Ants profiler将帮助我进行内存分析和处理器利用率分析.但是,它对网络分析没有太大作用.是否有像网络剖析的ANT?如果没有,那么在获取此信息时我有哪些选择?

谢谢

回答一些答案:补充说明

无论使用什么工具,如果它无法直接链接到代码(我认为不可能),它需要能够无人值守地运行数天,以跟踪(记录到文件或数据库)进程使用的网络流量.它必须能够直接指定进程(wireshark无法做到).微软网络监视器可以做到这一点,然而,它做得更多(如此多的解析 - 逐帧)由于性能问题它不可用(运行几个小时后我已经有一百万帧来计算.如果我尝试将内容复制到excel或数据库中,单独复制需要30分钟以上.

真的,这似乎是一件很简单的事情,但是,我很难找到一个可以做我想要的工具.

.net performance networking profiling network-utilization

6
推荐指数
1
解决办法
1338
查看次数

如何在Visual Studio IDE C#中隐藏跟踪代码?

当我开始在我的代码中添加更多跟踪时,我意识到它增加了很多混乱.我知道Visual Studio允许你隐藏和显示代码,但是,我希望能够将组代码转换为"跟踪"代码,然后隐藏它并随意显示,因为我正在阅读代码.我想它可以按文件或每个类或每个函数执行此操作.

有没有办法做到这一点?你们做什么的?

添加一些说明

隐藏当前功能允许您执行此操作,除非隐藏代码时,您无法判断其是否跟踪.您也不能说"隐藏所有跟踪代码"和"显示所有跟踪代码",这在阅读函数时非常有用,具体取决于您要执行的操作.

c# trace code-readability visual-studio

6
推荐指数
1
解决办法
906
查看次数

Debugger.Launch()现在在升级到.NET 4.0后崩溃我的Windows服务

对于调试环境,我们在代码中有一个条件Debugger.Launch语句,允许开发人员调试windows服务的启动代码.我们今天刚升级到.NET 4.0.自升级以来,如果我们退出JIT窗口(即我们选择不调试),Windows服务就会崩溃(进程正在终止).它曾经简单地恢复.如果我们接受附加,申请不会终止并且工作正常.

编辑

另一个奇怪的事情是抛出的异常不再是Launch for User异常.它现在是一个未处理的Microsoft .NET框架异常.我试图用它来包围一个试试看看我得到了什么.我调试时无法捕获异常,因为此时不会发生异常.如果我尝试将异常记录到文件,服务崩溃,我什么都没得到.

有任何解决这个问题的方法吗?有什么理由吗?

更多信息

我刚刚创建了一个空白的新窗体应用程序.


        public Form1()
        {
            try
            {
                MessageBox.Show("hello");
                System.Diagnostics.Debugger.Launch();

            }
            catch
            {
                MessageBox.Show("error");
            }
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            InitializeComponent();
        }

        void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            MessageBox.Show(e.ToString());
        }
Run Code Online (Sandbox Code Playgroud)

我得到了第一个"你好".然后我得到一个JIT窗口,上面写着"未处理的Microsoft .NET异常已经发生".如果我不附加,它会在没有消息或任何事情的情况下崩溃.

我试过WinDbg而不是.我对这些工具一点也不熟悉.这是我得到的.它似乎根本没用

Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [C:\Users\moueis\TestDebugging_100927_104956.dmp]
User Mini Dump File with Full Memory: Only application data is available

Comment: '
*** C:\Users\moueis\Desktop\procdump.exe  TestDebugging.exe -e -ma
*** Unhandled exception'
Symbol …

.net c# debugging .net-4.0 visual-studio-2010

6
推荐指数
1
解决办法
1810
查看次数

我应该如何在C#中实现我的存储库(DDD)来处理同一聚合根的多个调用

我的项目中的哪个类应该负责跟踪已经创建了哪些聚合根,以便不为同一个实体创建两个实例.我的存储库应该保留它创建的所有聚合的列表吗?如果是,我该怎么做?我是否使用单一的存储库(听起来不对我)?另一种选择是封装这个"缓存"在其他地方是其他类吗?这个类看起来会是什么样的,它适合什么样的模式?

我没有使用O/R映射器,所以如果有一种处理它的技术,我需要知道它是如何做到的(如它使用的模式)能够使用它

谢谢!

c# domain-driven-design aggregate repository ddd-repositories

6
推荐指数
1
解决办法
1561
查看次数

如何在ASP .NET中动态插入网页(并更新插件)?

对于常规组件,可以使用MEF动态加载组件.如果这些程序集需要实时更新,建议使用AppDomain来托管动态程序集(可能可以使用托管外接程序框架(MAF)).需要更新时,将停止appdomain,更新程序集并重新加载appdomain.

那些由ASP .NET加载的包含类后面代码的程序集呢?如何在不强制重新启动主应用程序域的情况下更新它们.是否可以在动态应用程序域中托管我的一些页面?你会怎么做?这个appdomain可以共享登录令牌和身份验证的东西,这样用户就不必重新登录了吗?

谢谢

asp.net mef appdomain plugin-architecture maf

6
推荐指数
1
解决办法
697
查看次数

如何在C#中获取所有Windows事件日志(事件查看器日志)及其层次结构和友好名称的列表

我正在尝试从事件查看器中复制以下内容

在此输入图像描述

我遇到了一些问题.首先,我得到的一些名字不是显示名称或友好名称.例如,对于"Microsoft Office Alerts",我只是回到"OAlerts".如何从"OAlerts"获得完整的"Microsoft Office Alerts"?

第二个问题是弄清楚层次结构.似乎所有我能做的就是解析破折号并进行某种最好的猜测.在API中似乎没有一种简单的方法可以解决这个问题.GetLogNames只为您提供所有日志的平面列表

EventLogSession session = new EventLogSession();
List<string> logNames = new List<string>(session.GetLogNames());
foreach (string name in logNames)
{
   //EventLogConfiguration config = new EventLogConfiguration(name); //looks useful but doesn't give me any of the info i'm looking for.

   Console.WriteLine(name);
}         
Run Code Online (Sandbox Code Playgroud)

.net c# system.diagnostics etw event-viewer

6
推荐指数
1
解决办法
970
查看次数

使用SQL Server 2005上的System.Transactions的TransactionInDoubtException

这篇文章的基本问题是"为什么非升级的LTM交易会受到质疑?"

我收到System.Transactions.TransactionInDoubtException,我无法解释原因.不幸的是我无法重现这个问题,但根据跟踪文件它确实发生了.我正在使用SQL 2005,连接到一个数据库并使用一个SQLConnection,所以我不希望进行促销.错误消息表示超时.但是,有时我得到一条超时消息,但异常是事务已中止而不是有疑问,这更容易处理.

这是完整的堆栈跟踪:

System.Transactions.TransactionInDoubtException: The transaction is in doubt. ---> System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
   at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
   at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
   at System.Data.SqlClient.TdsParserStateObject.ReadByte()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[] buffer, TransactionManagerRequestType request, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32 timeout, SqlInternalTransaction transaction, TdsParserStateObject stateObj, …

c# transactions sql-server-2005 transactionscope system.transactions

5
推荐指数
2
解决办法
9771
查看次数

在讨论MEF(托管可扩展性框架)和.NET 4.5时,"多个范围"意味着什么?

.NET 4.5的新功能中, microsoft表示MEF现在将支持"多个范围".这是什么意思?我无法在任何地方找到相关文档.

mef .net-4.5

5
推荐指数
1
解决办法
435
查看次数

app.UseDeveloperExceptionPage()在Ubuntu上的ASP .NET Core上似乎不起作用

到目前为止,非常简单的ASP .NET核心应用程序。我打开了开发人员例外页面,如下所示

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        app.UseDeveloperExceptionPage();
        app.UseMvc();

    }
Run Code Online (Sandbox Code Playgroud)

我已经将其作为可移植的应用程序部署在Windows上,并且当特定的Web API请求因异常而失败时,我能够在开发人员页面(顺便说一句很棒的页面)上看到错误。

我将同一应用程序作为独立的应用程序发布到Ubuntu,但没有显示开发人员错误页面(尽管看起来运行得很好-我已经硬编码了一个错误,只是为了测试开发人员页面本身)。

c# asp.net ubuntu .net-core asp.net-core

5
推荐指数
1
解决办法
2995
查看次数