If I correctly understand your predicament, you find that you can continue advancing through the program by pressing F5 until you get through to the catch on the client. In other words, your application can continue just fine and would not stop here if you were running outside the debugger.
What you need, then, is to TELL the debugger to keep going (“don’t stop here”). You need to use one of the attributes that gives direction to the debugger.
Here’s an example from my LoginManager class code:
[DebuggerStepThrough] // Let client catch exceptions
public IPrincipal Login(ILoginCredential pCredential, PersistenceManager pManager) { ...
You may find several methods in your class that need this attribute … or another like it such as:
[DebuggerNonUserCode] // Let client catch exceptions
private static AppIdentity GetUserPasswordIdentity(ILoginCredential pCredential, PersistenceManager pManager) { …
Frankly, I don’t remember off the top of my head which of these two to use in which circumstances.
Here’s a web page that discusses these attributes: http://blogs.msdn.com/stevejs/archive/2005/12/03/499803.aspx
Please note that, once you have such an attribute in place, YOU CANNOT DEBUG INTO THE METHOD. If you try to put a breakpoint on a line in “Login”, you’ll see the brown dot just fine but you’ll probably overlook the tooltip that tells you the debugger won’t actually stop there.
So when you WANT to debug “Login”, you have to comment out the attribute. Just remember to uncomment it later J