asp.netPRO AccuSoft ImageGear for .NET is the Global Standard imaging toolkit and SDK for Visual Studio, AJAX, and .NET Framework 3.5



Subscription Services
Print Subscription
Online-Only Subscription
Renew Subscription
asp.netNOW Newsletter
Change of Address
Pay An Invoice
Subscription Packages

asp.netPRO
Articles
411asp.net Directory
New Products
Book Reviews
Blog Listings  
E-Newsletter Articles- NEW
Events  - NEW 
Job Listings  
Product Reviews
Opinion
Back Issues
Reprints/E-prints
Search

Downloads
Premium Downloads


Informant
Contact Us
Advertise with Us
Write For Us



 
 
 


See How Your Data Grid Compares


.NET Pro VPS 2008 Fall Conference in Las Vegas
2007 asp.netPRO Complete Works CD
Co-Sponsored by:
Download your free trial now!


Click here for the online product directory, asp.netPRO Product Portal

 

Latest Features

 •

Conflict Resolution


 •

Cause and Effect


 •

Why Are You Still Single?


 •

Future Features of ASP.NET


 •

WCF Proxies: To Cache or Not to Cache?



Article Rating



Tell a friend
about this article!




Back Draft

 

But It Works On My Machine!

 

 

In a perfect world, you would develop and test your code on a local PC, then deploy it to a staging server for integration testing, followed by deployment to production. Along that path, everything would function and behave the same on the staging server and production server as it does in your development environment. You’re probably chuckling right now, because this ideal is not always the reality. There are gremlins at work, whose sole purpose is to make your life miserable. I’m sure you’ve either heard or said the stereotypical developer mantra, “but it works on my machine,” several times in the past.

 

There are myriad potential reasons why your code works in one environment and not another. For instance, in the world of ASP.NET development, your staging and production environments are typically running server operating systems, while development usually happens on Windows XP Professional. The way that IIS operates and the features available are different between the two, so that could be the reason.

 

The problem could also be a permissions issue. All too often, we as developers write code while logged in to our PCs as members of the Administrator’s role. Administrator powers are rarely granted (nor recommended) in production environments, so when those powers are taken away at deployment, issues can crop up. That is why you should learn to live the least privilege lifestyle. Keith Brown wrote a fantastic article entitled “How To Develop Code As A Non Admin” that will get you started in that direction (http://pluralsight.com/wiki/default.aspx/Keith.GuideBook/HowToDevelopCodeAsANonAdmin.html).

 

Of course, the reason your software doesn’t work correctly once deployed may have nothing to do with permissions — or any other configuration differences between the two environments. Sometimes the problem is rooted in the data that you are consuming in one environment versus another. Perhaps the data in staging or production roots out logic deficiencies in your code that weren’t present in your test environment data. I typically recommend to my clients that their test database contain data that is highly representative of the production environment. That means occasionally backwashing production data into development to keep test scenarios realistic and current. That may not always be possible or convenient, though. I also don’t recommend hitting the production database from your development PC — you’re really asking for trouble.

 

For the occasions where you absolutely must get insights about the way your code is running on a non-development PC, Visual Studio 2005 offers the Remote Debugging feature. Now, I know what you’re thinking. Remote Debugging in Visual Studio 2003 was a total disaster. It was cryptic to set up and permissions issues abounded. Getting it to work was a black art and was often more trouble than other (less savvy) trial-and-error methods of troubleshooting issues. Luckily, the setup process has been greatly simplified in Visual Studio 2005 (http://msdn2.microsoft.com/en-us/library/y7f5zaaa(VS.80).aspx). There is just a single installation package per processor type (e.g., x86, x64 or IA64) that is located on the Visual Studio 2005 CD/DVD in the \Remote Debugger folder. Once you install that, you have a nice GUI to run and manage your debug processes on the server. The name of the debugger application is msvsmon.exe; it is located in the [Install Path]\Microsoft Visual Studio 8\Common7\IDE\Remote Debugger\[Processor Type]\ folder.

 

There are a few things you need to consider, such as debugging across domains, but the link above contains easy to follow instructions for setting that up, as well. Essentially, it boils down to making sure that you have the same user id and password on both the local and remote machine, as well as some ports open for DCOM communication. To debug ASP.NET applications that are running under another account name (e.g., SYSTEM, ASPNET, or Network Service), you’ll need to be an administrator on the remote machine.

 

Attaching to a remote process in Visual Studio 2005 is very similar to how it was in Visual Studio 2003 (e.g., using the Attach to Process dialog), except that now it actually works. For ASP.NET applications, you can actually just run the application if you are connected to a remote IIS project. Lastly, I wouldn’t recommend debugging your production environment during normal business hours, as it requires you to put the application in debug mode in the web.config file, which restricts you to a single thread of execution. Because your staging and production environments should be identical, though, you should rarely (if ever) have to debug your production environment.

 

We will likely never reach a point where all our code works all the time after it is deployed, but that is one reason why the staging server environment exists. By leveraging a staging server environment that mirrors your production environment, as well as developing code using least privilege, you can prevent many deployment bugs from occurring in the first place. When you do hit those hard to solve issues, though, it is great to know that Microsoft finally has a usable Remote Debugging story.

 

Jonathan Goodyear is president of ASPSoft (http://www.aspsoft.com), an Internet consulting firm based in Orlando, FL. Jonathan is Microsoft Regional Director for Florida, a Microsoft Certified Solution Developer (MCSD), and author of Debugging ASP.NET (New Riders). Jonathan also is a contributing editor for asp.netPRO. E-mail him at mailto:jon@aspsoft.com or through his angryCoder eZine at http://www.angryCoder.com.

 

 

 

Microsoft Internet Explorer
Top of page

 

AccuSoft ImageGear for .NET is the Global Standard imaging toolkit and SDK for Visual Studio, AJAX, and .NET Framework 3.5

Informant Communications Group

Informant Communications Group, Inc.
5105 Florin Perkins Road
Sacramento, CA 95826
Phone: (916) 379-0609 • Fax: (916) 379-0610

Copyright © 2008 Informant Communications Group. All Rights Reserved. • Site Use Agreement • Send feedback to the Webmaster • Important information about privacy