visual uso studio servidor puerto puede net iniciar esta configurar cambiar asp aplicacion .net windows-vista permissions
código postal

.net - studio - no se puede iniciar el servidor web de iis express el puerto 80 esta en uso



¿Puedo escuchar en un puerto(usando HttpListener u otro código.NET) en Vista sin requerir privilegios de administrador? (5)

En XP, tenía que usar una línea de comando (httpcfg) para abrir el puerto primero, de lo contrario no funcionaría para los que no son administradores.

Vea aquí : la página explica el problema, y ​​hay un código postal en la parte inferior para que se pueda usar.

Esta pregunta ya tiene una respuesta aquí:

Estoy usando HttpListener para permitir que un usuario configure un proxy en un puerto definido por el usuario. Cuando inicio el HttpListener, recibo una excepción si la aplicación no se está ejecutando bajo privilegios de administrador en Vista.

Según lo que he leído, este es el comportamiento esperado : se requieren privilegios de administrador para comenzar a escuchar en un puerto. Pero estoy seguro de que hay formas de evitar esto, ya que ejecuto muchos programas (como Skype) que escuchan en un puerto sin requerir elevación al administrador.

¿Hay alguna manera de hacer esto con HttpListener? Si no, ¿puedo hacer otras llamadas a la API en el código .NET para configurar el puerto?


Nunca he usado un HttpListener, pero a partir de su descripción suena más como si quisiera escuchar en un puerto TCP normal, en lugar de incrustar su aplicación en un espacio de nombres URL del servidor (que es lo que parece hacer HttpListener). Debería poder usar las funciones de socket regulares (System.Net.Sockets.TcpListener) para abrir y escuchar en un puerto TCP sin requerir privilegios de administrador. Estoy casi seguro de que Skype no usa un HttpListener.


Si bien puede escribir su propio servidor HTTP utilizando TCP / IP normal (es relativamente simple), es más fácil usar HttpListener, que aprovecha la funcionalidad HTTP.SYS agregada en Windows XP SP2.

Sin embargo, HTTP.SYS agrega el concepto de URL ACL. Esto se debe en parte a que HTTP.SYS le permite vincularse a espacios de nombres secundarios en el puerto 80. Usar TCP / IP directamente evita este requisito, pero significa que no puede vincularse a un puerto que ya está en uso.

En Windows XP, puede usar el programa HttpCfg.exe para configurar una ACL de URL que otorga a su cuenta de usuario el derecho de vincularse a una URL en particular. Está en las muestras de Platform SDK.

En Windows Vista, aún se admite HTTPCFG, pero la funcionalidad se ha absorbido en NETSH:

netsh http show urlacl

... mostrará una lista de ACL de URL existentes. Las ACL se expresan en SDDL.

netsh http add urlacl url=http://+:80/MyUri user=DOMAIN/User listen=yes

... configurará el espacio de nombres MyURI para que DOMAIN / User pueda escuchar las solicitudes.


Si necesita manejar solicitudes solo desde su propia computadora (generalmente para fines de prueba), puede escribir localhost en lugar de * en prefijo.

Por ejemplo, en lugar de "http: // *: 9669 /" puede escribir "http: // localhost: 9669 /". Esto funciona bien con HttpListener y no requiere privilegios administrativos (al menos en Windows 7).


Bueno, tuve que lidiar con algo similar. Mi computadora está en un dominio restringido, por lo que no tengo privilegios de administrador. Después de algunas investigaciones y lecturas, encontré este hilo y las sugerencias netsh me hicieron usar enlaces temporales de acl solo para desarrollar pruebas. En mi computadora, esta regla existe.

Hay esta entrada:

Ejecute ''netsh http show urlacl'' (como se muestra arriba)

[...] Reservierte URL : http://+:80/Temporary_Listen_Addresses/ Benutzer: /Jeder Abhören: Yes Delegieren: No SDDL: D:(A;;GX;;;WD) [...]

Entonces puedo usar el HttpListener como no administrador (Jeder):

[...] HttpListener l = new HttpListener(); string prefix = "http://+:80/Temporary_Listen_Addresses/"; l.Prefixes.Add(prefix); l.Start(); // does not throw any "Permission Denied/Access Denied/Zugriff verweigert" [...]

Que esto ayude a cualquiera a encontrar este hilo.