Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

System.Net.HttpListenerException: Failed to listen on prefix 'http://localhost:8080

Tags:

I am running the following code from Scott Allen's ASP.Net Fundamentals course

using System; using Microsoft.Owin.Hosting; using Owin;  namespace ConsoleApplication1 {     class Program     {         static void Main(string[] args)         {             string uri = "http://localhost:8080";             using (WebApp.Start<Startup>(uri))             {                 Console.WriteLine("Started!");                 Console.ReadKey();                 Console.WriteLine("Stopping!");             }         }     }      public class Startup     {         public void Configuration(IAppBuilder app)         {             app.UseWelcomePage();             //app.Run(             //  ctx => ctx.Response.WriteAsync("Hello Owin!"));         }     } } 

However when I run the console app I get a message

    Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.HttpListenerExceptio n: Failed to listen on prefix 'http://localhost:8080/' because it conflicts with  an existing registration on the machine.    at System.Net.HttpListener.AddAllPrefixes()    at System.Net.HttpListener.Start()    at Microsoft.Owin.Host.HttpListener.OwinHttpListener.Start(HttpListener liste ner, Func`2 appFunc, IList`1 addresses, IDictionary`2 capabilities, Func`2 logge rFactory)    at Microsoft.Owin.Host.HttpListener.OwinServerFactory.Create(Func`2 app, IDic tionary`2 properties)    --- End of inner exception stack trace ---    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments,  Signature sig, Boolean constructor)    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Objec t[] parameters, Object[] arguments)    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invoke Attr, Binder binder, Object[] parameters, CultureInfo culture)    at Microsoft.Owin.Hosting.ServerFactory.ServerFactoryAdapter.Create(IAppBuild er builder)    at Microsoft.Owin.Hosting.Engine.HostingEngine.StartServer(StartContext conte xt)    at Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context)    at Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions opt ions)    at Microsoft.Owin.Hosting.Starter.HostingStarter.Start(StartOptions options)    at Microsoft.Owin.Hosting.WebApp.StartImplementation(IServiceProvider service s, StartOptions options)    at Microsoft.Owin.Hosting.WebApp.Start(StartOptions options)    at Microsoft.Owin.Hosting.WebApp.Start[TStartup](StartOptions options)    at Microsoft.Owin.Hosting.WebApp.Start[TStartup](String url)    at ConsoleApplication1.Program.Main(String[] args) in e:\EShared\Dev2015\WebA ppScottAllen\ConsoleApplication1\ConsoleApplication1\Program.cs:line 12 Press any key to continue . . . 

I ran the Resource Monitor from the Task Manager Performance Tab and can see that there are 2 entries on Listening Ports for 8080.

Both have Image=System, PID=4, IPv6 unspecified, Protocol TCP, Firewall Status Not allowed, not restricted

I am new to Listening Ports, how do I get the code working?

like image 444
Kirsten Avatar asked Apr 18 '15 06:04

Kirsten


2 Answers

When faced with error: "Failed to listen on prefix 'http://someURL:somePortNo/' because it conflicts with an existing registration on the machine." It is not really necessary that there is an application actively listening on that port - thus output of Netstat -abno may not always help. If the already registered application is running it can help you narrow down to which application is causing the issue by looking at the info Netstat provides.

However, you will get this error even after the application in question is stopped since the error indicates a registration. The correct diagnostic command therefore is:

netsh http show urlacl 

We need to examine the output and check whether any of the listed reserved URLs is configured to listen on the specific port your application is trying to use. You need to note the value of the "Reserved URL" field for that specific application. You will need it later for deleting the registration which is causing the error.

Uninstalling that specific application - assuming their uninstall procedure does include an un-registration - may resolve the problem. Alternatively you could take a more direct and precise approach of using the command for deleting a URL reservation:

(Note that if the conflict is legitimate, it may be better to reconfigure your application to listen on a different port instead.)

netsh http delete urlacl url=<value of "Reserved URL" in the output of netsh http show urlacl> 

When the command works you will see output: URL reservation successfully deleted.

Upon running netsh http show urlacl a second time you will now see that the url registration is indeed gone. And now running your application should not result in the error you were seeing earlier.

like image 156
shivesh suman Avatar answered Oct 04 '22 07:10

shivesh suman


I was able to solve the problem by uninstalling several programs. Unfortunately I did not test after each, so I don't know which one it was.

They included Dropbox, Goto Assist, Goto Meeting and a winforms application

like image 36
Kirsten Avatar answered Oct 04 '22 07:10

Kirsten