If you are a developer you have probably heard about debugger. The debugger in .net is the inbuilt program of visual studio which helps in detecting and correcting the presence of the errors in the code. In the local system, built-in IIS acts as a default debug server for asp.net and .net core project. But what to do if we are hosting a web application in IIS?💡 We can easily debug any web application that is hosted on IIS by attaching the worker process(w3wp.exe) of the intended web application to Visual Studio.
What is IIS?
IIS stands for Internet Information Services, formerly known as Internet Information Server is a Windows Service which allows you to host(or store), manage, and test websites or web application on Windows Systems. You can host any sites like PHP websites, static websites, asp.net websites, java websites in IIS. So, IIS does all the processing and managing your websites. You can host multiple applications in IIS.
In Linux, you have heard about Apache Server, the same function that Apache Server does in Linux is done by IIS in windows System.
What is the w3wp.exe worker process?
All asp.net application runs under the worker process. When a client sent a request to the server, the worker process will be responsible for generating the request and response. So, we can claim that the worker process is one of the main functional parts of ASP.Net Web application running on IIS.
For debugging web application hosted on IIS, you much enable IIS at first.
Enabling IIS Step By Step (You can skip this if you have done already)
- Press Win + R keyboard keys combination to open Run Window, then type appwiz.cpl and press Enter.
- Program and Features windows will open, on the left pane you will find "Turn Windows features on or off” link. Click on it.
- Then Windows Features windows will open, there for simplicity, check all the subcomponent inside Internet Information Services.and press Ok button. Then you may have to wait sometimes for applying Windows Features Changes.
4.) Next, go to browser and type: http://localhost and you must get this type of screen. This is the default page for IIS, indicating that IIS is successfully activated.
Used In This Tutorial:
- Visual Studio 2019
- Visual Installer
Here, we will learn to debug the IIS hosted web application in both Asp.Net and Asp.Net Core projects.
Debug IIS Hosted Web Application in Asp.Net Core Project
1) Open/Create Sample Asp.net Core Project.
Here, I am creating one sample asp.net core project and named it as "DebugIISHostedWebApplication" as shown below.
Fig: Sample asp.net core project
2) Add web application in IIS
If you have successfully enabled IIS service then you can move forward, otherwise, go here.
2 a) Open IIS
Click on the start button and type "IIS" in the search box and you will see Internet Information Services(IIS) Manager at at the top of the list. Then click on it.
fig. Open IIS
2 b) Add Sites
Now, You will get Internet Information Services Windows. On the left side, you will find the "Sites" bar.Right-click on it and select "Add Website" as shown in the figure.
fig: Add Website
2 c) Give the name and set path of your project
Then Add Website window appears. Here, you need to give all the details for your web application.
- Enter the site name: You can give any name. Here, I have given debugTest. Remember that this is the name of the website in IIS.
- Set Physical Path: Physical Path of the file where the site is located in the System.
- Click on the Ok button.
2 c) Verify Your Site or Application in IIS
After successfully completing the above steps, just go to your IIS, look at sites section at the left pane, and then check there a website/application that you have added currently is present or not?
You can see that the name "debug test" is located there. Next just expand that sites and see whether there is content like shown above is present or not. If you don't have the content then you are doing something wrong. If so check it out.
2 d) Browse your site or application from IIS
Right-click on your project. Then click on "Manage Website". Then next click on "Browse".
Now your sites should be opened in a web browser.
3) Enable Development-Time IIS support
For enabling Development-Time IIS Support we must need Visual Studio Installer.
3 a ) Goto's bottom-left corner and type "visual studio installer" as shown below. Then click on "Visual Studio installer.".This will launch Visual Studio Installer.
3 b) Visual Studio Installer gets open as shown before.
Select the Development time IIS support component and this is present in the Optional section under the ASP.NET and web development workload. The component installs the ASP.NET Core Module, which is needed in order to run .net core apps on IIS.
Now, we can finally debug the application in Visual Studio.
4)Attach w3process in Visual Studio
4a) Open your Project in Visual Studio and attach debug point
Open visual studio and attach debug points somewhere in the project as shown below.
Then build the project (shortcut: Ctrl + Shift + B ).
4b) Next, attach a process
In Visual Studio, go to Debug → Attach to Processor simply press Ctrl + Alt + P Key combination
After clicking Attach to Process, this screen will come up.
There check on "Show process from all users". Click on "Refresh" Button then go and find the w3wp.exe process and shown below. And next click on "Attach" Button
Then look at the debug point and you must have debugged point looks as shown on the left which indicates that the Process attached successfully.
Now, hit your debug point from the browser. Then your debug point should look as shown below:
So we have successfully debugged IIS Hosted web application.