Soy un principiante en WCF, pero trato de mejorar mi experiencia. Y en el primer paso me enfrenté al problema. Creé el servicio WCF más simple. La lista de código: (todo el código en un archivo)
using System;
using System.ServiceModel;
namespace EssentialWCF
{
[ServiceContract]
public interface IStockService
{
[OperationContract]
double GetPrice(string ticker);
}
public class StockService : IStockService
{
public double GetPrice(string ticker)
{
return 94.85;
}
}
class Service
{
static void Main(string[] args)
{
ServiceHost serviceHost = new ServiceHost(typeof(StockService),
new Uri("http://localhost:8000/HelloWCF"));
serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
serviceHost.Open();
Console.WriteLine("To continue press ENTER");
serviceHost.Close();
}
}
}
Ese sería el servicio que me daría un número a través de la consola. Pero la depuración me da la excepción: (en lugar de número :))
HTTP no pudo registrar la URL http: // +: 8000 / HelloWCF / . Su proceso no tiene derechos de acceso a este espacio de nombres (consulte http://go.microsoft.com/fwlink/?LinkId=70353 para más detalles).
¿Alguna vez has enfrentado la misma situación? Estaré encantado de ver todos los consejos.
Respuestas:
Lamentablemente, el enlace en el texto de excepción, http://go.microsoft.com/fwlink/?LinkId=70353 , está roto. Sin embargo, solía conducir a http://msdn.microsoft.com/en-us/library/ms733768.aspx, que explica cómo configurar los permisos.
Básicamente le informa que use el siguiente comando:
netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user
Puede obtener más ayuda sobre los detalles con la ayuda de
netsh
Por ejemplo:
netsh http add ?
Da ayuda en el
http add
comando.fuente
COMPUTER_NAME\USER_NAME
el comando anterior.netsh http add urlacl url=http://+:80/ user=DOMAIN\user
si desea otorgar a la cuenta derechos de acceso a cualquier espacio de nombres en el puerto.Cerré el IDE de Visual Studio y lo volví a abrir haciendo clic derecho en el ícono de Visual Studio y diciendo "Ejecutar como administrador". Luego, cuando ejecuté el host, ¡funcionó!
fuente
Haga clic derecho en Visual Studio> Ejecutar como administrador> Abra su proyecto y ejecute el servicio. Este es un problema relacionado con los privilegios.
fuente
Necesita algunos privilegios de administrador para su cuenta si su máquina en la red de área local aplica entonces algunos privilegios de administrador a su usuario; de lo contrario, debe comenzar ide como administrador ...
fuente
Lo simple que debe hacer es cerrar su entorno de Visual Studio y abrirlo nuevamente usando 'Ejecutar como administrador'. Ahora debería ejecutarse con éxito.
fuente
En Windows Vista y versiones posteriores, las cosas del servicio HTTP WCF causarían la excepción que mencionó porque una cuenta restringida no tiene derecho a eso. Esa es la razón por la que funcionó cuando lo ejecutó como administrador.
Todo desarrollador sensato debe usar una cuenta RESTRINGIDA en lugar de un Administrador, sin embargo, muchas personas van por el camino equivocado y es precisamente por eso que hay tantas aplicaciones que EXIGEN permisos de administrador cuando en realidad no son necesarias. Trabajar de manera perezosa resulta en soluciones perezosas Espero que sigas trabajando en una cuenta restringida (mis felicitaciones).
Hay una herramienta por ahí (desde 2008 más o menos) llamada NamespaceManagerTool si recuerdo correctamente que se supone que debe otorgar los permisos de usuario restringidos en estas URL de servicio que usted define para WCF. Aunque no he usado eso ...
fuente
Su código de muestra no funcionará como se muestra porque olvidó incluir un
Console.ReadLine()
antes de laserviceHost.Close()
línea. Eso significa que el host se abre y luego se cierra inmediatamente.Aparte de eso, parece que tiene un problema de permiso en su máquina. Asegúrese de haber iniciado sesión como una cuenta de administrador en su máquina. Si es administrador, es posible que no tenga el Servicio de publicación World Wide Web (W3SVC) ejecutándose para manejar solicitudes HTTP.
fuente
Si bien pude resolver este problema en una computadora siguiendo las soluciones de otros usuarios, el comando
netsh
no resolvió el problema en una de mis máquinas y, aunque el usuario actual tenía derechos de administrador, todavía recibía el mensaje "HTTP no pudo registrar URL .... Su proceso no tiene derechos de acceso a este espacio de nombres ". Por lo tanto, comparto mi solución en caso de que todavía no lo haga funcionar con las otras soluciones también.Después de intentar también otorgar permisos de escritura al usuario en el directorio físico de mi sitio web y no tener éxito, finalmente decidí intentar cambiar la configuración de IIS .
Como muestran las imágenes a continuación, configuré las Credenciales de ruta física de mi sitio web para conectarme como un usuario específico, que era una cuenta de administrador con DOMINIO \ nombre de usuario y contraseña, y esto fue suficiente para que desapareciera el error.
fuente
Cierre iis express y todos los navegadores (si la url se abrió en alguno de los navegadores). También abra el IDE de Visual Studio en modo administrador. Esto ha resuelto mi problema.
fuente