Answering one of the recent question on SO, i encountered this anomaly.
This msdn blog suggests using IIS to generate machine key, which looks more secure to me as Microsoft tool being used. However, it seems this feature is only supported until IIS 7 or less.
I don't find it on my box IIS 8.5. I checked on IIS 7.5 and its not present there either. However, I found it in IIS 6.1 on a coworker box.
I am wondering whether:
It still exist in IIS latest versions, if yes, how to use it?
If it is removed from latest version of IIS, what's suggested approach from Microsoft to generate a secure enough machine key?
Is it safe to use these custom generators?
a. Machine Key Generator (online)
b. ASP.NET machineKey Generator (tool you can modify)
See https://support.microsoft.com/kb/2915218#AppendixA for information on how to generate a <machineKey> element. There's a script there that you can copy & paste into a Powershell window.
Reminder: only use keys that you generated yourself on your own machine. Never use an online generator.
As for mentioned by #ryanulit, you can just copy the script directly to your PowerShell window
Steps :
Open powershell window (anywhere is fine)
Copy the script from the microsoft link and paste in your powershell window and press enter
Type Generate-MachineKey -validationAlgorithm SHA1
That's it. Your machine key description will show up in the window.
PowerShell image sample from my PC
Script Link from Microsoft http://support.microsoft.com/kb/2915218#AppendixA
I know I came to very late to provide this answer. Hope this helps for any others.
I'm using the latest IIS 10(which is the latest)
By default, the Machine Key feature is not installed when enabling the Internet Information Service in the windows features.
You need to install ASP.NET XX from the World Wide Web Service
After installing this, you can generate your keys from the Machine Key Option.
Make a copy of the administration.config file in C:\Windows\System32\inetsrv\config. Then, in the <moduleProviders> node under <!-- ASP.NET Modules--> remove the MachineKey node. Then run iisreset. Re-open IIS and see if the ASP.NET area is present. If it is, put the MachineKey node back in the administration.config file (or just re-instate the original config file) and run iisreset again.
Some web projects are causing me problems while others work fine. I decided to focus on one of the problematic ones.
I'm using Visual Studio 2013 on Windows 7. I think I'm running it as administrator, the window title says PROJECT NAME - Microsoft Visual Studio (Administrator).
When I try to run the project I get a popup saying:
Unable to launch the IIS Express Web server.
Failed to register URL "http://localhost:62940/" for site "SITE NAME"
application "/". Error description: Access is denied. (0x80070005).
This does not seem entirely uncommon but I have tried many of the suggestions without luck:
Deleted %userprofile%\Documents\IISExpress\, tried to run.
netsh http add urlacl url=http://localhost:62940/ user=everyone, rebooted and tried to run. (Actually user=Alla since Swedish Windows).
netsh http delete urlacl url=http://localhost:62940/, rebooted and changed from <binding protocol="http" bindingInformation="*:62940:localhost /> to <binding protocol="http" bindingInformation="*:62940:/> in %userprofile%\Documents\IISExpress\config\applicationhost.config and tried to run. (It did changed the error message to say ... URL "http://*:62940/" ....
Reinstalled IIS 8.0 Express
Reinstalled Visual Studio 2013
I'm at my wit's end, what am I doing wrong?
If I change the port of the project (e.g. to 55555) it starts... This is not a desirable solution since these projects are worked on by several people. Maybe the port is blocked by something else? If so, is there an easy way to check by what?
Port 62940 seems to be free. Running netstat does not show any application listening to it. Something else must be wrong.
I tried starting the project today after not touching it for a few months. It worked but I don't know why.
I solved the error by changing the port for the project.
I did the following steps:
1 - Right click on the project.
2 - Go to properties.
3 - Go to Server tab.
4 - On tab section, change the project URL for other port, like 8080 or 3000.
Good luck!
Yeah, I agree, top answers are really pro solutions. Here is one for intermediates:
Solution Explorer
Right click on project select Unload project
Again Right click and select Edit ProjectName.csproj
Remove these 3 lines
<DevelopmentServerPort>0</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:62940/</IISUrl>
Save and reload the project, and you are good to go.
try (as elevated administrator)
netsh http delete urlacl url=http://*:62940/
The ideal way to sort this out is to use the IIS Express tray icon to stop the web site that is causing the problem. To do this, click the little upward-pointing arrow in the right-hand end of the task bar and right-click the IIS Express icon. This will pop up a small window showing you the web sites that IIS Express is currently running...
If you click on one of the items under "View Sites" you have the option to stop that site. Or, you can click the Exit item at the bottom of the window to stop all web sites.
That should enable you to debug in Visual Studio. When you start debugging again, IIS Express will automatically restart the web site, and should be able to allocate the port.
If that fails, you have to do it the dirty way. Open Windows Task Manager and kill the Microsoft.VisualStudio.Web.Host.exe*32 process, then you can run the project fine. Note that this will kill IIS Express completely, meaning that all web sites will stop, so you'll have to restart each one in VS if you want to debug any others. Try the pop-up icon method first tough as it's cleaner and safer.
Don't know if this answers your issue, but it works for me.
Update Thanks to JasonCoder (see comment below) for adding that on Win10, the process is Microsoft.VsHub.Server.HttpHost.exe
When using Visual Studio 2015 the solution can be a bit different to the previous answers. VS2015 creates a hidden folder .vs under the same folder as your solution file. Under this is a config folder containing applicationhost.config. Deleting this file (or the entire .vs folder) then starting VS2015 to recreate it can fix this error.
Got this error as well lately. Tried all the above fixes, but none worked.
To disable it, type services.msc in command prompt, then right click and disable Internet Connection Sharing. I edited the properties of it as well to disable at startup. Mine looks like so now: services capture screenshot.
I got the same issue when running my application from Visual Studio 2019 on Windows 10.
After some time googling and trying various proposed solutions without success, I determined that the "Access Denied" error was a result of the port number my application uses (50403) falling in an "excluded port range".
You can view the excluded port ranges with the following command:
netsh interface ipv4 show excludedportrange protocol=tcp
After some more time googling I found that the two most likely culprits that create these exclusion ranges are Docker and Hyper-V. Docker was not installed on my computer but Hyper-V was.
My Solution
Disable Hyper-V: Control Panel-> Programs and Features-> Turn Windows features on or off. Untick Hyper-V
Restart the computer.
Add the port you are using to the port exclusion range: netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent
Reenable Hyper-V
Restart the computer
I added the port I am using to the exclusion list to ensure that I won't get this problem again after reenabling Hyper-V. After Step 4 and 5 when I viewed the excluded port range I can see that Hyper-V reserved a port range starting with the next port after my port.
My application now worked perfectly!
This is the only solution I found
net stop winnat
net start winnat
Thanks to Matt
This happened with me when I was trying to access my site from a remote location:
At first, applicationhost.config (VS2015) contained the standard:
<binding protocol="http" bindingInformation="*:64376:localhost" />
In order to access my site from a remote location within the network, I added (step 1):
<binding protocol="http" bindingInformation="*:64376:192.168.10.132" />
Then, I entered into CMD with Admin rights (step 2):
netsh http add urlacl url=http://*:64376/ user=Everyone
As step 3, I added it a rule to the firewall.
netsh advfirewall firewall add rule name=”IISExpressWeb” dir=in protocol=tcp localport=64376 profile=private,domain remoteip=localsubnet action=allow
Then, I got this error when trying to run the solution again.
Solution: I seemed to have done everything right, but it did not work until I ran netsh also for the existing localhost rule:
netsh http add urlacl url=http://localhost:64376/ user=Everyone
Now, it works again.
I just had a similar issue. I'm not totally sure how to describe the actual fault but it seems like the hostname in the reservation is incorrect. Try this in an elevated command prompt...
netsh http delete urlacl url=http://localhost:62940/
... then ...
netsh http add urlacl url=http://*:62940/ user=everyone
and restart your site. It should work.
I ran into this same error message, but it looks like it was produced from IIS Express. This article helped me resolve it
TL;DR
Run the following command from an Administrative command prompt:
> netsh http add iplisten ipaddress=::
After trying a number of suggested solutions without success I just rebooted my PC. After that the problem didn't occur anymore.
I ended up with cleaning the project file (csproj) and the applicationhost.config (iis express) with all entries regarding iis express configuration. After that, it worked.
If you're having this after installing Visual Studio 2015 and you can see Error messages in System event log such as this: Unable to bind to the underlying transport for [::]:{your_port}. . The IP Listen-Only list may contain a reference ... then you might be missing a registry entry.
Run this under administrative command prompt: netsh http add iplisten ipaddress=:: to fix it.
I found the solution described in detail here
After all of the steps listed here failed for me I got it working by running VS2015 as administrator.
This happened to me on Windows 10 and VS 2013.
Apparently there is a maximum port number IIS Express handles.
Ports above 62546 don't work for me.
The error can be solved if you just restart Visual Studio. It has the same effect as restarting the Microsoft.VisualStudio.Web.Host.exe*32 process.
Got the same issue where IIS express complained about http://localhost:50418/ and none of above solutions worked for me..
Went to projektFolder --> .vs --> config --> applicationhost.xml
In the tag <sites> I found that my web app had two bindnings registered.
<site name="myApp.Web" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\git\myApp\myApp.Web" />
</application>
<bindings>
<binding protocol="https" bindingInformation="*:44332:localhost" />
<binding protocol="http" bindingInformation="*:50418:localhost" />
</bindings>
</site>
Removing the binding pointing to *:50418:localhost solved the issue.
Using VS2017 and IISExpress v10.
My issue turned out to be that I had SSL Enabled on the project settings. I simply disabled this because I did not require SSL for running the project locally.
In Visual Studio 2015:
Select the project in the Solution Explorer.
In the Properties window set SSL Enabled to False.
I was able to run the project.
In my situation I was getting an error about port 443 in use because this was the port set on the SSL URL for the project.
Running netstat -abn I noticed that the software "Duet Display" was reserving thousands of ports in the ~51000 range.
Closing it solved my problem.
Sometimes this error my be another Visual Studio version running on the same machine.
Go to the project "Properties" => "Web", and on the "Servers" section change the port to something else that is not used in and save it. You will be asked to created a virtual directory and click "Yes". Now run the project and it will work now.
In my case it worked at first and after a while stopped working and IIS Express reported that the port was in use.
netstat -ab showed that Chrome was using the port. After I quit Chrome, it started working again.
I am not sure however, why Chrome would occupy that port.
This happened to me on Windows 7 and VS 2013 while viewing a project on the browser after build. I only had to close the browser "Chrome" then made sure that the port is not in use in my Network Activities using some utility (Kaspersky) then tried again and worked without any problems.
In Visual Studio 2015:
Find your startup page in your project (eg: mypage.aspx) , and right
click on it.
Click on Set as Start Page.
Right click on the project.
Click on Properties.
Click on the Web Tab on the left.
In Project URL, enter a different port, such as: http://localhost:1234/
In Start Action, select Specific Page: mypage.aspx or select Specific URL: http://localhost:1234/mypage.aspx?myparam=xxx
I write it for information.
Delete the file in the project.
After Clean>Build>Proje Start
I solved this issue by killing all instances of iexplorer and iexplorer*32. It looks like Internet Explorer was still in memory holding the port open even though the application window was closed.
I had this issue with JetBrains Rider, specifically for port 80 and 90 bit it was working with other ports as well as visual studio.
after running as admin this resolved the issue.
In Visual Studio 2019
Just remove Debug profile and create new one Do the Trick
Go to Project properties In debug tab
try first Changing ports Web Server Settings
if Changing ports not worked then Remove Debug Profile and Create new One-Warning Make Sure You Know Previous Settings
What worked for me is disabling all other network adapters, except the one I'm currently using. The event in event viewer was:
Unable to bind to the underlying transport for [::]:50064. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.
Since I have VMware Workstation, Docker (and thus Hyper V) some VPN clients, I have a lot of network interfaces.
I'm making an installer program for my web application. My web application uses CSS and JS heavily, so I want to enable both Static and Dynamic HttpCompression for IIS7/7.5.
It needs 2 steps:
I can modified the web.config, put <httpcompression> tag, it's ok.
DynamicContentCompression must be turned on in Windows Feature to make httpCompression work.
Static HttpCompression is enable by default in IIS7 and IIS7.5, but Dynamic HttpCompression is not enable by default (although it's available). I can do manually by turn on: Start/ControlPanel/ProgramsAndFeatures/TurnWindowsFeatures on or Off/IIS/WWW Service/Performance features/Dynamic Content Compression, but How can I programmatically turn it on that Windows Feature?
I can use PowerShell, C# in my installer.
Any idea how I might be able to do this? Thanks.
This is the way I would have done it:
dism /online /enable-feature /featurename:IIS-HttpCompressionDynamic
dism allows you to check the return code of command, allowing you to verify that it worked (or was already installed)
These PowerShell commands will add add the Dynamic Compression feature.
Import-Module ServerManager
Add-WindowsFeature Web-Server, Web-Dyn-Compression
Don't forget to Run As Administrator or have administrator rights.
You can turn this on using the appcmd tool. From a command line:
C:\windows\system32\inetsrv\appcmd set config /section:urlCompression /doDynamicCompression:True
Or if you want to execute it from within a PowerShell script:
& $env:windir\system32\inetsrv\appcmd set config -section:urlCompression /doDynamicCompression:true
You're going to need administrative privileges to do either.
Disclaimer: this is totally unproven and untested ....
Greg's answer above is nearly right, but that only unlocks the installed feature. By default, when that feature is installed, it's locked down ... all the way down at the machine level.
The rational is because dynamic compression can really frak with the servers CPU. So in a hosting environment, this could kill things. Even with your own dedicated server, it could also kill things badly. So the safe route is to lock it by default and only if u know what you're doing, then go and unlock it.
So .. having a quick google search, i came to this page.
Notice how this technet article has a commandline thingy to install all the required packages for a sample static IIS server. I know your question is not for a static IIS server ... but it does higlight the commands possible.
So i'm guessing ... maybe this? ::
Start /w pkgmgr /iu:IIS-HttpCompressionDynamic
?? maybe :)
here's another article with more options...
Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpCompressionDynamic
Related to a previous issue that I thought was resolved and actually isn't...
My Visual Studio 2008 installation may be a bit messed up, I think.
When my ASP.NET project is set up to use VS Dev Server with a fixed port, I get the "Port in use" error described in the linked question.
When my project is set up to use a random (auto-assigned) port number, it works, but it launches the browser using a port number 3 less than the actual Dev Server port number (e.g. if the port number is 1903, the browser launches to http://localhost:1900/)
If I make changes to the project settings, they do not "take" until I save and restart Visual Studio.
Any ideas how to track this one down?
Thanks!
I had a similar problem which hit my 2 main machines at the same time. On investigating I found it to be related to the Eset personal security (guessing a recent update messed something up). To solve it I excluded VS2008 from the active browser filtering - this is in:
setup -> advanced firewall setup -> antivirus & anti spyware -> web access protection -> HTTP -> webbrowsers
Deselecting vsdev in here fixed the problem - interestingly enough disabling the firewall and antivirus / antispyware did not solve the issue, so it is worth looking for a similar setting if you are running different security software
First try to kill all "WebDev.WebServer.exe" processes.
In Solution Explorer, click the name of the application.
In the Properties pane, click the down-arrow beside Use dynamic ports and select False from the dropdown list.This will enable editing of the Port number property.
In the Properties pane, click the text box beside Port number and type in a port number.
Click outside of the Properties pane. This saves the property settings.
Hope this helps
I do absolutely agree with Macros' answer. Just want to share solution for Eset Nod32 v5
In ESET NOD32 v5 to allow Visual Studio to run Development or IIS Express server you must uncheck Visual Studio in Nod32 Advanced Setup => Web and Email => Protocol filtering => Web and email clients
Weird!
The port number is stored in the .sln file. So, I'd blow that away the solution file first, re-create it and see what happens. If that doesn't help, I'd then move onto the web.config file and blow that away and start again too.
I also encountered the same error message:
Unable to launch Visual Studio development server because port [xxxx] is in use.
However, I do not have ESET installed. Instead, I had recently installed GlassFish server on my machine and that was causing the problem. Therefore, in Windows Task Manager, I killed the process it runs under which is java.exe and it fixed the problem.
This also applies to Visual Studio 2010.
And there is more to it.
Symptoms:
A Web (Services) project is configured to run at a specific port, e.g. 10080.
After a while Visual Studio compains “Unable to launch the Visual Studio Development Server because port ’10080′ is in use”
The reason is still unclear. It might have something to do with the webdev server crashing.
Restarting the pc doesn't solve the problem.
Netstat doen’t show an entry for the port 10080
Manually startin WebDev.WebServer40.exe at port 10080 works fine.
Since I'd like to start from within Visual Studio, I moved to port 10081, then to 10082, and today to 10083. I’m running out of ports.
Solutions that did not work:
Restart Visual Studio
Tweaking Trendmicro security settings (couldn't access them)
Disabling Forticlient antivirus/firewall
Workaround that DOES work:
Configuring my project to manually start the server
Right click the project, choose properties
Click the tab "Web"
Pick for start action "Start external program" and point it to Webdev.Webserver40.EXE
(for me: C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\WebDev.WebServer40.EXE)
Command line arguments: /port:10080 /path:C:\Solution\Project
Working directory: C:\Solution\Project
Under servers check "Use Custom Web Server"
Do not check any debugger checkbox
Side effect: my project thinks break points are not getting hit. ("no symbols loaded"). Turns out they work like they should.
I hope anybody ever finds a definitive solution, but up until then this workaround does the trick for me.
To solve your problem, just restart your PC. I've had the same problem, I did the same thing.
Looked for an answer to this and didn't see it.
This is for IIS 6.0 / Windows Server 2003.
I'm working with an extremely large ASP/ASP.NET application and I'm trying to get my development environment to match my team members environment. This process is basically trial and error: get an error, go into IIS, make a change, hope the error is fixed. Ugh. I'm hoping to find a way to replicate a set of IIS directories and their configurations on one machine onto my machine.
I did find a script that will iterate through and give me a list of all virtual directories on a machine. It helped, but not a lot since I still have to go in and set up all those virtual directories (I think there are like 20 of them ballpark). The whole process is complicated by the fact that we're mixing ASP and ASP.NET applications in the same application which spans many solutions and projects. Getting the whole thing up and going seems like way too much work but I've never heard of a real solution to this.
Would Powershell be helpful here?
You should export and import IIS metabase.
These might help:
IIS Settings Replication
IIS Metabase Backup and Restore
Fortunately, in IIS7, ASP.NET config is integrated with IIS config so the job is done by copying Web.config.
Here's Microsofts' documentation for iiscnfg. iiscnfg documentation
When I ran it the first time, I got an error that said "This script does not work with WScript." If that happens to you:
1. Click OK.
2. At the "Would you like to register Cscript as your default host for VBscript?" click Yes.
3. At "Successfully registered Cscript" click OK.
4. Run the command again