IIS Express unable to create the virtual directory - iis-express

I'm using IIS Express to create a virtual directory at http://localhost:5000/ and received this error:
Unable to create the virtual directory. The URL http://localhost:5000/ is already mapped to a different folder...
This is because I've used the port 5000 for an old project before and it's no longer needed.
My question is, how can I remove the old mapping using IIS Express so I can create the virtual directory at the same port again?
Thanks

You should be able to accomplish this in one of two ways.
You can remove the old project, or change its port using WebMatrix, which has an administration interface for IIS Express.
You can also do it by hand, by modifying the applicationhost.config file directly. The file is located in the %userprofile%\documents\IISexpress\config folder. You can find the project configuration under the <system.applicationHost>/<sites> element.
UPDATE:
WebMatrix has been discontinued and support has officially ended.

No software installation required. Simply follow the steps:
Right-click the project node in the solution explorer and select the option to edit the project (.csproj) file. Near the bottom of the file, find the following:
<iisurl></iisurl>
Edit this entry to add your virtual directory:
<iisurl>http://localhost:5000/</iisurl>

I was getting this because I had a site on the IIS Server (not express) with the same bindings (domain name and port) as IIS Express was trying to use.
I thought that since the site was not started it would ignore it, but I was wrong. Once I change it in IIS, then the IIS Express one worked and the error went away.

Seems you need to run Visual Studio with administrative rights if you want to create Virtual directory on ports below 1024.

Related

Unable to launch IIS Express Web Server - Failed to Register URL - Cannot create a file when that file already exists | VS Community 2017

In VS Community 2017 (v15.9.26) I am unable to debug as IIS Express Web Server Produces the following error.
Output for IIS Express: Failed to register URL "localhost:xxxxx/" for site. Error description: Cannot create a file when that file already exists. (0x800700b7)
Steps to try to resolve the issue
Clean, Rebuild, Restart VS, Restart Computer
Deleted the IISExpress folder and re-ran VS SA Source
Deleted the .vs folder and re-ran VS
Created a new virtual directory SA Source
Re-cloned repo in a new directory and started from scratch
Running netsh http show urlacl showed no other process using port
Removed the ComponentModelCache from the VS AppData
Re-installed VS Community 2017
Implemented a confirmed working applicationhost.config with updated references to my paths, still same port issue.
Re-installed IIS 10.0 Express
Turned off anti-virus
I should note that I have three startup projects running. Two of the projects (with different ports) run fine so I can rule out firewall or SSL issues. The third startup application only produces this error.
After trying all 7 steps and resting my computer multiple times I am stuck. Any further solutions/fixes to try would be greatly appreciated!
Try checking your IIS Manager maybe one of your app is running address.
open IIS manager, check sites and maybe disable one and try again.
I found two temporary workarounds in order to bypass the VS error.
Assign a different port number to the application
Comment out the specific binding protocol in the .vs\config\applicationhost.config
I am still looking for a more sustainable solution.

The webserver could not be found for IIS-confugured Web Application Project

When I am trying to create a new project in dotnetnuke 9 with for Theme develop using VS, I am getting the following error:
"The Web Application Project is configured to Use IIs. The webserver could Not be found "
I am using VS 2019 and SQL 2017. I create a website in IIS with port 80 that works correctly at localhost. Folder wwwroot/dnndev.me has Network Service permission full access, hostname is dnndev.me without www, there is no .csproj file because the project has not created it yet.
Any suggestions are welcome.
Please check if you have some virtual directories and/or applications in your web site. Visual Studio creates these very often when you open a project. It's safe to remove them - also after opening the project.

How to debug ASP site without port number on VS 2012 Express

I'm trying to debug an ASP.NET 4.0 web site using Visual Studio Express 2012. I've configured the project settings to use the local IIS web server which was installed with VS. I need to use IIS so that urlrewritingnet will work.
I need to run the site locally without a port number. Currently it runs as http://localhost:4652/ which breaks some of the routines since they reference Request.Url.Host. This results in attempts to access resources using http://localhost/.
There is a lot of code to this site and it would be extremely easier and quicker (I think) to just configure my local debug to run on localhost instead of localhost:4652. Is there a way of doing this?
Since it's IIS Express installed with VS there is no configuration manager for IIS. When I click PROJECT -> mysite Properties and change the Project Url (under Use Local IIS Web Server) to http://localhost/ I get a warning that reads:
The local IIS Express URL http://localhost/ specified for Web project mysite has not been configured. To keep these settings you need to configure the virtual directory. Would you like to create the virtual directory now?
When I click on Yes, I get another dialog box saying:
Unable to create the virtual directory http://localhost/
Does anyone know if this should or should not work and if it can work, how do I do it?
You can go to "user/documents/iisexpress/config" then open applicationhost with notepad or other relevant editor then go find "bindings" then change the value of bindingInformation into "*:80:localhost". Done
Its really simple. You need to attach the IIS process to the visual studio and browse the website.
Below article guides to achieve this.
http://www.codeproject.com/Articles/37182/Debug-your-ASP-NET-Application-while-Hosted-on-IIS
Its always a good practice to do a unit test of web apps to local iis while developing.

Every time I open my project I have to create virtual directories

I am currently working on a solution which has an ASP.NET application and a Web Service. Whenever I open this solution I get the message that the virtual directories for this project have not yet been created and must be to continue. The problem is, if I hit OK, it cannot create the directories because they already exist and then I cannot load the project. Looking in IIS I can see that the virtual directory exists in C:/Inetpub/wwwroot/ProjName. If I delete this from IIS, I can then open the project, but it creates the virtual directory in C:/location of project folder. When it uses the project's location, I am not able to connect to the site or the web service.
The same thing happens on XP with IIS 5.1, VS 2010 and Server 2003 with IIS 6.0, VS 2010. Similarly, it happens on colleague's machines, so I am convinced that it is a setting in VS, and not IIS or my machine.
Right now, my solution is to delete the virtual directories, open the VS solution, delete the virtual directories, and publish the projects with the publish toolbar in visual studio (not the web tab in project properties).
I fear that I've at some point messed up a setting on both of the projects, but it has been some time since I've been working around this. I've scoured all of the settings and I can't find anything that fixes this behaviour. I need to pass the project along to someone else, and I feel as if the work around instructions may be confusing so I want to fix this.
I used to do things similarly back in the days when VS didn't have its own dev server - re: directly work on web projects in a local version of IIS (if memory serves, this was called "Personal Web Server" or PWS - am I advertising my age?)
Anyway, I haven't (thankfully) done that since VS (2005?) got its own dev server...
Try this process in VS 2010:
You can develop your solution on any local folder in your file system. You can run/debug your solution from VS (ctrl f5 or f5 respectively) - it will use VS dev server by default. Your development machine doesn't even need to have IIS...
After you are done developing and debugging (using VS and its dev server), you can publish to IIS or even to some other "publish folder" in your (local) file system, and simply copy the files to whatever (local/remote) IIS virtual (ASP.NET application) folder you prefer.

IIS Express on a shared development machine (rdp)

I have a problem which I thought could be common, searched the web for it but found nothing.
We're using a shared development machine, and every developer connects through RDP and has his own profile, desktop, etc.
The problem I am encountering is with IIS express. Since it is configured at user level (applicationhost.config inside documents/iisexpress/config) and the port configured must match the one declared in the .csproj file, two developers can't possibily run on the same port, as it gives the error "the port is already in use".
So to make it work we have to manually change the port both on the csproj and in the applicationhost.config for every developer, but it's only a temporary fix as when we commit our changes to SVN, the csproj file gets merged, so we have to do this process every time someone commits/updates.
My question is: is there a clean way to use IIS express with Visual Studio 2010 on a shared development machine?
Thanks.
Partially tested answer. Not sure how it'll work on a multi-user workstation. It might give you, or someone else here, a jumpstart to a proper solution that works best in your existing environment.
It appears that Visual Studio stores all the web configuration in the csproj/vbproj and IISExpress stores its configuration in %userprofile%\Documents\IISExpress\config\ApplicationHost.Config.
Normally, we store the csproj files in source control, but ignore the csproj.user file so that each person may have some unique settings, such as the web configuration.
Each user who signs into the box must have their own profile.
Each profile must have their own copy of the source code.
Each user's copy of the source will contain their own csproj.user file.
Ignore .**proj.user* files in your source control.
Copy the web settings into the csproj.user by unchecking the option Apply server settings to all users and then commit to source control.
Each user who pulls a copy of the source will have to configure their web settings, use a unique port that the others users are not using, and uncheck the box above so that their configuration is not passed on to the other users.
Doing this, Each profile will have their own IIS Express ApplicationHost.Config configured with a port that is different from the other profiles. Each user's copy of the source will have a csproj.user that is configured with the same port in their profile's IIS Express configuration.
For reference:
I've tried changing IIS Express's ApplicationHost.Config to use a different port than what Visual Studio expects and Visual Studio is unable to connect the debugger to IIS Express.
How IIS Express's configuration works: http://msdn.microsoft.com/en-us/library/ms178109.aspx
The best option you can use is to take advantage of the Import functionality built into MSBuild.
Essentially, you would create a seperate build target for each user. You can then import this target from this referenced file directly. I would then recommend creating this file on the server (for each user), but leaving it outside of source control.
This should allow each user to have a custom IIS port without conflicting with others.
I think you can create subdomains for each user and implement the required changes and do the testing. In this way each user can his own subdomain and port and hence work independently on the shared IIS Express.
You probably won't like my answer but here's my thoughts:
As you noticed, the configurations are tied to the user profile and not the server; this is because IIS Express is not intended to be used as a shared development server. You should be using full IIS.
I do not see any benefit or reason to use the same physical box for development. Admittedly, I don't know all the details of your scenario with licensing or workstation resources, but it doesn't seem like you gain much from having everyone RDP into the box to use Visual Studio - each person still needs a license, performance will be slower, and you shouldn't be working on the same project instance.
You should seriously consider your entire setup for development:
Each developer should use Visual Studio on their workstation, and debug/test there using IIS Express (configured with the same ports and settings across all machines - very easy).
From there, your developers should check their code into source control, and examine conflicts that may or may not arise. I'm not sure about SVN but the MSBuild automation available in TFS can be use to setup a continuous build policy that deploys to a common IIS installation so that your merged code is tested and usable from the full IIS installation mentioned above.
Anything else would be a workaround/hack that will bite you in the butt later.

Resources