AssemblyResolve Event and VJSharpCodeProvider

This one kept me up late the other night.  We had an issue where ASP.NET was recompiling a page and we were getting an exception: System.Exception: Error loading VJSharpCodeProvider, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a This was interesting for two reasons: The application does not use J#. This is more subtle but nagged the back of my mind -…

10

All the Ways to Capture a Dump…

Frequently when troubleshooting a problem we capture a memory dump.  Memory dumps are a great tool because they are a complete snapshot of what a process is doing at the time the dump is captured.  It can be a great forensic tool.  There are however an abundance of tools to capture memory dumps (*.dmp).  In…

6

Troubleshooting Event ID 5010 — IIS Application Pool Availability

With this event you will get a message stating, “A process serving application pool ‘%1’ failed to respond to a ping. The process id was ‘%2’.”  When an Event ID 5010  appears in your system log and WAS is the source, you can be assured of two things.  The first is that a worker process…

4

Windows Server 2003 Service Pack 2 and 24-bit Color TS Connections

Okay this is a really weird one!  When you install Service Pack 2 on Windows Server 2003 you can no longer connect using MSTSC via Terminal Services (TS)/Remote Desktop(RDP) with a 24-bit color setting.  For the customer I was working with this meant that the applications they are hosting on those servers did not look…

4

Exploratory Testing in Visual Studio 2012

With the recent release of Visual Studio 2012, there are many new features and updates to explore.  One of the new features is Exploratory Testing, which allows you to test your software without a pre-defined test or script.  It’s perfect for simply “exploring” your application to see what issues you may encounter.  Exploratory Testing comes…

3

Caller Information – a new concept in Visual Studio 2012

With the recent release of Visual Studio 2012, there are many new features and updates to explore.  One of the new features is the concept of Caller Information, available in both C# and VB.  Caller Information allows you to obtain certain information about the caller to a method.  More specifically, it allows you to get…

3

Transforming Performance Monitor data from graphs to spreadsheets

After troubleshooting Windows applications for more than 10 years here at Microsoft, I have found Performance Monitor (aka Perfmon, aka System Monitor, aka Sysmon) to be one of the most highly effective and under-utilized tools to help diagnose and define application performance & stability problems. Perfmon can be critical in helping diagnose memory leaks, longer-than-expected…

3

Memory Based Recycling in IIS 6.0

Customers frequently ask questions regarding the recycling options for Application Pools in IIS. Several of those options are self explanatory, whereas others need a bit of analysis. I’m going to focus on the Memory Recycling options, which allow IIS to monitor worker processes and recycle them based on configured memory limits. Recycling application pools is…

3

Best Practice – <GeneratePublisherEvidence> in ASPNET.CONFIG

Best Practice Recommendation Add the following line to your ASPNET.CONFIG or APP.CONFIG file: <?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <generatePublisherEvidence enabled="false"/> </runtime> </configuration> Note the ASPNET.CONFIG file is located in Framework Directory for the version of the Framework you are using.  For example for a 64-bit ASP.NET application it would be: c:\Windows\Microsoft.NET\Framework64\v2.0.50727 For a 32-bit application…

2

Best Practice – Workflow and Anonymous Delegates

Best Practice Recommendation In your Workflow application (more exactly in the host of your workflow application) never use anonymous delegate like that : AutoResetEvent waitHandle = new AutoResetEvent(false); . . . workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e) { waitHandle.Set(); }; Details The code above is very common and works correctly at least most of the…

2