port - how - System.Net.HttpListenerException: No se pudo escuchar en el prefijo ''http:// localhost: 8080
owin example c# (3)
Cuando se encontró con un error: "Failed to listen on prefix ''http://someURL:somePortNo/'' because it conflicts with an existing registration on the machine."
No es realmente necesario que exista una aplicación que escuche activamente en ese puerto, por lo que la salida de Netstat -abno
no siempre ayuda. Si la aplicación ya registrada se está ejecutando, puede ayudarlo a determinar qué aplicación está causando el problema al consultar la información que proporciona Netstat.
Sin embargo, recibirá este error incluso después de que la aplicación en cuestión se haya detenido ya que el error indica un registro. El comando de diagnóstico correcto por lo tanto es:
netsh http show urlacl
Necesitamos examinar la salida y verificar si alguna de las URL reservadas en la lista está configurada para escuchar en el puerto específico que su aplicación está tratando de usar. Debe tener en cuenta el valor del campo "URL reservada" para esa aplicación específica. Lo necesitará más adelante para eliminar el registro que está causando el error.
Desinstalar esa aplicación específica, suponiendo que su procedimiento de desinstalación incluya un anulación del registro, puede resolver el problema. Alternativamente, podría adoptar un enfoque más directo y preciso al usar el comando para eliminar una reserva de URL:
(Tenga en cuenta que si el conflicto es legítimo, puede ser mejor volver a configurar su aplicación para que escuche en un puerto diferente).
netsh http delete urlacl url=<<>value of "Reserved URL" in the output of netsh http show urlacl <>>
Cuando el comando funcione, verá el resultado: la URL reservation successfully deleted
.
Al ejecutar netsh http show urlacl
por segunda vez, verá que el registro de URL se ha ido. Y ahora la ejecución de su aplicación no debería dar lugar al error que estaba viendo anteriormente.
Estoy ejecutando el siguiente código del curso ASP.Net Fundamentals de Scott Allen
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!"));
}
}
}
Sin embargo, cuando ejecuto la aplicación de consola me aparece un mensaje.
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 . . .
Ejecuté el monitor de recursos desde la pestaña de rendimiento del administrador de tareas y puedo ver que hay 2 entradas en los puertos de escucha para 8080.
Ambos tienen Imagen = Sistema, PID = 4, IPv6 no especificado, Protocolo TCP, Estado de Firewall No permitido, no restringido
Soy nuevo en los puertos de escucha, ¿cómo puedo hacer que el código funcione?
Pude resolver el problema al desinstalar varios programas. Lamentablemente no probé después de cada una, así que no sé cuál fue.
Incluyeron Dropbox, Goto Assist, Goto Meeting y una aplicación winforms
Tuve el mismo problema, y fue una solución tonta. Tenía otras aplicaciones de consola abiertas que utilizaban el mismo número de puerto, por lo que, después de cerrar todas las aplicaciones de la consola, pude ejecutar y no recibí este error.