WCF, client projects : how to launch both but only debug the client? - visual-studio

In visual studio, I have a WCF project which is ran in a local IIS server, and a client project that I want de debug. Then I launch the WCF project in debug mode, close it in VS (it stays opened in the windows task bar), put my breakpoints in the client project, and then launch debugging of the client project.
I have to tell you that the client is given a list of files that it parses one after the other.
It seems to work well, but after an given amount of time (a few minutes), the following file enters in the debugging. sorry if it is not very clear, I try to explain it the best.
To explain it in more details, The files are provided to the client, and each file is first treated by an entry method, say A(). I have a breakpoint in the first line of A(), and while debugging this method and those which follow, suddenly, after a "F10" (one step ahead), the cursos go to the A()'s breakpoint and the 2 calls of A() are concurrent.
I tried to launch the web service in RELEASE, but then I can't launch the client(a visual studio message box complains the service isn't in debug mode).
Do you know a way to run both projects but only debug the client?
thank you.

Select the solution in Solution Explorer and then select the Properties icon in the toolbar, or right-click the solution and select Properties.
On the Properties page, select Common Properties > Startup Project.
If the server does not need debugging, set the server project to "Start without debugging" and set a breakpoint on the client, then start the project.
If you want to know more about debugging in VS, you can refer to the links below:
https://learn.microsoft.com/zh-cn/visualstudio/debugger/debug-multiple-processes?view=vs-2019

Related

How to debug multiple clients connecting to server application?

I wrote a Client that will connect to my WCF service, and the service will able to handle multiple client application connections.
So when I first start testing it, I configured Visual Studio to start multiple projects to start up both my client and WCF service project in Visual Studio.
Then because I want to test if it works when I have multiple client applications connected to my service, I start up another client application manually (double...click on exe).
So yeah, of course the client application that I started up manually won't be able to debug in Visual Studio, and it does have strange things goes on. So is there any advice for debugging in situations like this?
You can launch the additional clients separately, and then in a new instance of Visual Studio (with the project loaded), go to the Debug menu and select "Attach to Process" to start debugging the new client.
There is the option to set multiple startup projects:
In Solution Explorer, select the solution (the top node).
Choose the solution node's context (right-click) menu and then choose Properties. The Solution Property Pages dialog box appears.
Expand the Common Properties node, and choose Startup Project.
Choose the Multiple Startup Projects option and set the appropriate actions.
Anyway, I often debug LoB apps consisting of server and client and come across this compelling necessity all the time, when I only want to debug one of them while keeping the other on between sessions.
What I do is I first set the current startup project using the top toolbar (see screenshot) to the insignificant one (if I'm currently working on the client, it would be the server, or vice versa), then "Start without debugging" (Usually Ctrl+F5).
Then, I switch the startup project to the client I want to debug, and hit F5 or other debugging method I'm interested in.
Somewhat tedious, but it's the quickest and works for me the best so far.
There are some petitions to Microsoft to make this feature easier so that they should add a command like "Start instance without debugging", so that you don't have to set the startup project back and forth all the time. Please vote here, and here.

Any good way to start 2 exes from VS 2008 IDE for debugging?

I have an exe that is a 'server' and exe that is its client.
I would like that when I hit RUN (F5):
server starts
client starts with debugger attached
Any good ways to do it?
If you have Multiple projects in One solution and you want to start more than one then,
Right Click on Solution ->Properties ->Common Properties->StartupProject->Select Multiple Start Up Projects ->Set the Sequence.(suitable For WCF like Scenario When Server and Client should start together, but in same IDE instance for debugging)
Other Ways
Right click on Project ->Debug->Select Start External Project-> Enter the Path.
Go To tools menu And click on Attach To Process.
Right click on the project in the solution explorer, thene select debug->run new instance

Debugging Web Apps in Visual Studio 2010 Is Annoying

I just starting working with Visual Studio and I find that debugging web apps is rather annoying. After making a change and clicking f5 it sends you to localhost:port/ however many times you are not editing localhost:port/ but you are editing localhost:port/someOtherFile, so you can see how this can be pretty annoying.
I am hoping that there is a way to optimize this. Ideally I would want to be able to hit f5 and have it just refresh whatever tab in my browser has localhost:port/whatever/youGetThePoint If this is possible it would make for some really nice debugging because many times you would never even have to click the browser.
Also, why do we have to hit shift+f5 to stop debugging. Why not just f5...
EDIT: I am using MVC2
In Visual Studio, right click on the file (Mypage.aspx -?) you want to start debugging with and select "Set As Start Page."
This will automatically open that page instead of root.
Click on your application in the solution manager
View -> Property Pages
Select the 'Web' tab on the left
Set 'Start Action' to a specific page.
You can select any page in the web project to be the startup page - once you click F5, the browser will start at that page.
Two things you can do:
You can set your web application to use your local IIS for debugging. I'm assuming you're using the standard settings that get setup whenever you create a new web app project.
To set your project to use IIS first make sure you have IIS installed on your dev machine. Select the web application project from the Solution Explorer and then right click. Hit the properties selection. The first tab on the right (build), should allow you to configure IIS to have an application for your project. It will eliminate the port number part and should be a bit easier to navigate around in.
Second thing you can do is find the page you want to go directly to and right click on it and set it as the start page ("Set As Start Page").
Also, you can Google for a Visual Studio macro that will attach to the IIS worker proc so you don't have to refresh what the browser is currently doing. You can also go to the debug menu item and select "Attach to Process..." and then find the worker proc and attach to it.
I believe Start Options might do the trick for you.
Right-click on the project, and select "Start Options..."
On the Start Options dialog under "Start action" heading, you may specify a page or start URL.

breakpoint will not currently be hit, why not?

Sometimes I get the message that the breakpoint will not be hit, and no symbols will be loaded.
The red icon in vs.net changes color, and the debug mode just doesn't work.
what is the reason for this?
You may be running your project in Release mode. If so, then switch to Debug mode
From Visual studio debugging issue with files of the same name by Philip Carney
Do each bullet in the link below ONE AT A TIME, but repeat my steps below with each one you try.
Stop debugging (press red square icon) in Visual Studio
Clean Solution
Build Solution
Tools > Attach to Process (or start with debugging)
Start the program that you're attaching to, and run it such that your code will get hit
If attaching to nunit.exe, then open NUnit and run a test so your breakpoint will be hit
If attaching to w3wp.exe (IIS site), then open your site in the browser and go to the page that will hit your breakpoint
for manage code only - theres a good answer for this problem on the following site:
http://geekswithblogs.net/dbutscher/archive/2007/06/26/113472.aspx
for native + managed code - in the startup solution properties-> Debug tab
make sure that "enable unmanaged code debugging" check box is checked
After trying several suggested fixes for this I did the following to get it working.
Right Clicked my Project in the Solution Explorer and selected "Properties".
Went to the "Web" section and made sure "Start Action" was set to "Current Page".
Spent 3 1/2 hours on that... I'm going to go get a drink now.
I resolved this problem by selecting Automatic:Native Code for the "Attach to" field in "Attach To Process" form
Next to the "Debug/Release" dropdown list, there is another one with "Any CPU/Configuration Manager...". Click "Configuration Manager...", and you will see some of your projects might be in Release mode. Change all of them to Debug.
This can happen if the symbol fiels are different from the assembly (remote debugging), or when there is no "direct path", so the assembly hasent been load, but might be loaded using reflection and loading of the required assembly at run time.
This can also happen if the debugger is not attached to the process for whatever reason. If it's the case, you can always go to Debug - Attach to Process... and choose the right process. Your breakpoints should return to normal once VS determines it can hit them.
What does it say when you hover the mouse over the disabled breakpoint? It will usually tell you the problem. My favorite is the old 'source code is out of date', especially when I'm debugging a DLL. Another favorite is when the file you're looking at isn't the one you're debugging (a copy in another folder?). If it's a case where you can breakpoint a caller routine, but not the callee, stepping into the callee will force VS to open the 'proper' source file and you'll be able to set breakpoints. Confusing, I usually swear at VS at this point, it seems to help.
I had the same problem. Which I know is normally if the build versions are different, and something isn't matching up. I cleaned my project, rebuilt it, and then deployed and that got everything back in-sync.
I do not like to play with knives but the only thing that worked for me involved editing the .csproj file itself. So, unload the project file, edit it by cutting and pasting the three asp.net files so that they are together in the ItemGroup. However, sometimes it is necessary to go further as explained here: http://carnotaurus.tumblr.com/post/4130422114/visual-studio-debugging-issue-with-files-of-the-same - Also, I give a list of other proposed solutions that did not work for me. I hope it helps.
I have tested with both deployed application and service, what I have found out that If the deployed code is different than a code in visual studio then breakpoint will not hit. Even small changes will affect and the breakpoint will not hit. So, It is better to debug the same version which is there on vs code and also in deploy application or service.
To fix this I had to re-create the virtual directory. I'm using Asp.Net 4.7 Framework and IIS Express. Went to Web project > property page > Web tab > clicked the "Create Virtual Directory" button next to Project Url textbox.
I forgot I had clicked this button in my "Main" branch, but then had switched to my "Sprint" branch. It kept running the "Main" code until I clicked "Create Virtual Directory" on my "Sprint" branch.
For me it was giving this because I haven't started the relevant project at start of application , it worked after I added project run on start

Visual Studio "Multiple Startup Projects" Problem

Background: I have a Visual Studio 2008 solution containing three different web application projects. If I right click on the solution, choose "Set Startup Projects.." and then choose "Multiple Startup Projects", I am able to fire them all up at once when I hit F5 (Start Debugging).
Desired Behavior: What used to happen (until it unexpectedly stopped working) was that it would automatically open up three browser instances (IE by default) and run each of the web apps in each of the three browser windows.
Current (Undesired) Behavior: All of a sudden, instead of opening three browser windows, it now opens a single browser instance and sequentially starts them all up with the exact same window/tab, which means that I am left with only one app actually running. (Whatever the last app it was that got started.)
Any idea what could cause this? I've checked my project and browser settings (including the "Reuse windows when launching shortcuts" option) and can't seem to figure it out. Any ideas?
Update: I changed Visual Studio's default browser to Firefox, and it works as expected by opening up multiple browser windows. I guess I'll just use Firefox when debugging for now, which is probably a good thing anyway.
I don't know why it had stopped working but rather have a suggestion: Check 'Don't open a page. Wait for a request from an external application.' option under 'Start Options' page of your Web project property pages. It specifies that Visual Studio won't open the browser window automatically. It should start your project in a Web server and wait for another application to make a request.
This seems to be a bug/feature in newer instances of MSVS and/or IE.
It happens in Visual Studio 2013 and 2015 as well, and might not be a bug as such, but can certainly be an undesired behaviour.
To reproduce:
Select 2 web projects in multiple startup projects.
Set one to Startup and the other to Start without debugging.
Only one browser tab is used, but you will see the tab used briefly by each project before the next one is loaded.
The problem is that the last loaded project is not necessarily the project you want to have in the browser.
An other workaround is to simply set both projects to Start.
It turns out using Firefox did the trick for me. Since there are no other answers, I will just accept this one.

Resources