none
Publicar webservice en IIS RRS feed

  • Pregunta

  • Hola a todos, 

    He desarrollado un servicio web en c# usando la plantilla de WCF Application, que funciona, puesto que me he creado un cliente que consume el servicio y funciona bien.

    El siguiente paso es publicarlo en IIS 8.5, pero estoy teniendo problemas.

    He seguido los siguientes pasos:

    - En el administrador de IIS, me he creado bajo el directorio Default Web Site una aplicación con Alias MiServicio. En el grupo de aplicaciones he puesto DefaultAppPool y la Ruta de acceso físico, la de la carpeta donde está ubicado el proyecto de WCF. 

    Cuando hago click en Probar configuración, me aparece el siguiente mensaje de error: 

    Autorización: No se puede verificar la ruta de acceso al servicio (C:\Users\....)

    El servidor está configurado para utilizar autenticación de paso a través con una cuenta integrada a la hora de tener acceso a la ruta de acceso física especificada. Sin embargo, el Administrador de IIS no puede verificar si la cuenta integrada tiene acceso. Asegúrese de que la identidad del grupo de aplicaciones tiene acceso de lectura para la ruta física. Si este servidor está unido a un dominio, y la identidad del grupo de aplicaciones es NetworkService o LocalSystem, verifique que <dominio>\<nombre_equipo>$ tiene acceso de lectura a la ruta de acceso física. A continuación, pruebe de nuevo esta configuración.

    Cuando intento acceder al WSDL del servicio a través del explorador (http://localhost/MiServicio), me aparece lo siguientes:

    Error HTTP 500.19 - Internal Server Error

    No se puede obtener acceso a la página solicitada porque los datos de configuración relacionados de la página no son válidos.

    ¿Que es lo que está pasando? ¿Estoy publicando correctamente el servicio en el IIS?

    Gracias y un saludo!

    lunes, 16 de marzo de 2015 14:12

Respuestas

  • Los pasos que he seguido son los siguientes:

    1- Crearme carpeta de nombre ServiceCalculator en C:/inetpub/wwwroot

    2- Agregar nueva aplicacion a DefaultWebSite. Como ruta he puesto la de la carpeta creada en el anterior paso. En está imagen se ve como lo he configurado:

    http://i60.tinypic.com/2h4epfa.png 

    3- Publicar el webservice desde visual studio. En esta imagen se observan los parámetros de conexión:

    http://i61.tinypic.com/2dtajww.png

    Cuando está publicando el webservice, el vs me muestra el siguiente mensaje:

    Error 1 No se pudo realizar la tarea de implementación web. (Se debe especificar un valor para 'setAclUser' cuando se usa el proveedor 'setAcl' con una ruta de acceso física.) 0 0 WcfService

    No obstante, en la carpeta ServiceCalcultor se me ha creado la carpeta bin con la dll del servicio, y los ficheros web.config y Service1.svc.

    Si cargo en el browser http://localhost/ServiceCalculator/Service1.svc?wsdl, me carga el wsdl del servicio. 

    Por lo tanto, creo que ya lo he publicado correctamente. Ahora, puedo consumir este webservice desde cualquier apliacion.

    Mi pregunta ahora es, ¿como hago para poder consumirlo desde otro equipo?

    Intento cambiar la direccion del servidor a la hora de publicarlo con vs a esta: http://192.168.98.79/ServiceCalculator/Service1.svc (ip de mi equipo)

    Cuando intento validar la conexión me aparece un Cliente de web deploy, pidiendome un user y pass, y ahi no se lo que poner, por lo que me da un error de validación.

    Cuando he probado a conectarme al servicio desde otra maquina de la misma red a http://192.168.98.79...., no encuentra el servicio ("Esta pagina web no está disponible")

    Saludos


    • Editado marodal84 lunes, 16 de marzo de 2015 17:40
    • Marcado como respuesta marodal84 miércoles, 18 de marzo de 2015 11:06
    lunes, 16 de marzo de 2015 17:16

Todas las respuestas

  • hola

    podrias poner una imagen de como defines este directorio virtual dentro del default website

    validaste que .net este habilitado en el iis ?

    Configuring a WCF application on IIS 7

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 16 de marzo de 2015 14:58
  • Hola,

    estas son las imagenes de como defino el directorio en el iis y el error que obtengo:

    http://es.tinypic.com/r/2pqw3sm/8

    http://es.tinypic.com/r/16legjn/8

    GRacias



    • Editado marodal84 lunes, 16 de marzo de 2015 15:39
    lunes, 16 de marzo de 2015 15:38
  • Hola,

    asegúrate de tener instalado el Microsoft Web Platform.

    También te podría ser de mucha utilidad esto:

    http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-web-deploy-on-iis-80-or-later

    Un saludo.

    lunes, 16 de marzo de 2015 15:55
  • No entiendo por qué es necesario instalar Microsoft Web Platform para publicar un servicio web. ¿Parece que el problema viene por un tema de permisos?

    ¿Puede que me falte alguna característica de windows? Mirando las casillas, veo que Nucle web hospedable de IIS no está marcado por ejemplo.

    Por favor, 

    ¿me podrías indicar los pasos que sigues tu cuando publicas un webservice?

    Gracias y un saludo

    lunes, 16 de marzo de 2015 16:18
  • hola

    veo en la imagen una ruta a la carpeta User, eso no esta bueno, deberias publicar en una carpeta dentro del c:\inetpub\wwwroot

    ademas alli no veo que crearias un directorio virtual, pareciera que trabajas sobre el default web site

    ----

    [ASP.NET] Crear y Publicar - Web Service (1/3)

    porque no creas un sitio nuevo con un puerto ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 16 de marzo de 2015 16:31
  • No debería ser necesario instalar el Web Platform,

    en principio no tiene gran complicación el tema de publicar un servicio en IIS, 

    El enlace que te adjunta Leandro debería valer.

    Te adjunto otro enlace que te puede ser mas explicativo.

    http://dotnetmentors.com/how-to-host-wcf-service-in-iis-7.aspx

    (El tema del Web Deploy que te adjuntaba mas arriba te puede ayudar con los despliegues de distintos componentes en las aplicaciones de IIS.)

    Cuidado con lo que dice Leandro también; con la ruta que usas.

    Un saludo.

    lunes, 16 de marzo de 2015 16:37
  • Si, estoy trabajando sobre el default web site.

    Es que lo que quiero publicar es un webservice, no una aplicacion web con asp.net. El web service lo he programado con C# y usando la plantilla WCF Application.

    ¿Entonces? ¿que debería hacer?

    ¿Me creo una carpeta dentro de wwwroot? ¿Y que debo meter en esa carpeta? ¿Debería meter la dll del webservice? ¿Y el archivo web.config?

    Perdona, pero es que estoy empezando con la programación de web services y el mundo .net.

    ¿Podrías indicarme como rellenar los campos de la pantalla "Agregar sitio web"?

    Saludos y muchas gracias por tu ayuda

    lunes, 16 de marzo de 2015 16:40
  • >>Es que lo que quiero publicar es un webservice, no una aplicacion web con asp.net.

    ok pero los pasos para publicar son los mismos, usas la opcion de publish del VS y lo que te deja en una carpeta que definas lo debes colocar en la carpeta virtual (dentro del default website) o en el sitio web (al cual le asignas un puerto)

    recuerda que debes habitar .net en el iis para que funcione y seleccionar la version del framework de .net que usaste para desarrollar

    imagen

    >>¿Podrías indicarme como rellenar los campos de la pantalla "Agregar sitio web"?

    pero entonces vas a crear un sitio con un puerto ?


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 16 de marzo de 2015 16:50
  • https://www.youtube.com/watch?v=iVTmpQGJ5PE

    talvez te sirva este video...

    ademas debes verificar que el aplication pool tenga seleccionado la version 4 de asp.net para que te lo corra el por defecto en algunos casos le pone la 2, entonces hay problemas, eso lo puedes ver en las configuraciones avanzadas en el panel derecho

    si te sirve, marca com respuesta sino comenta...

    Saludos

    lunes, 16 de marzo de 2015 16:52
  • Los pasos que he seguido son los siguientes:

    1- Crearme carpeta de nombre ServiceCalculator en C:/inetpub/wwwroot

    2- Agregar nueva aplicacion a DefaultWebSite. Como ruta he puesto la de la carpeta creada en el anterior paso. En está imagen se ve como lo he configurado:

    http://i60.tinypic.com/2h4epfa.png 

    3- Publicar el webservice desde visual studio. En esta imagen se observan los parámetros de conexión:

    http://i61.tinypic.com/2dtajww.png

    Cuando está publicando el webservice, el vs me muestra el siguiente mensaje:

    Error 1 No se pudo realizar la tarea de implementación web. (Se debe especificar un valor para 'setAclUser' cuando se usa el proveedor 'setAcl' con una ruta de acceso física.) 0 0 WcfService

    No obstante, en la carpeta ServiceCalcultor se me ha creado la carpeta bin con la dll del servicio, y los ficheros web.config y Service1.svc.

    Si cargo en el browser http://localhost/ServiceCalculator/Service1.svc?wsdl, me carga el wsdl del servicio. 

    Por lo tanto, creo que ya lo he publicado correctamente. Ahora, puedo consumir este webservice desde cualquier apliacion.

    Mi pregunta ahora es, ¿como hago para poder consumirlo desde otro equipo?

    Intento cambiar la direccion del servidor a la hora de publicarlo con vs a esta: http://192.168.98.79/ServiceCalculator/Service1.svc (ip de mi equipo)

    Cuando intento validar la conexión me aparece un Cliente de web deploy, pidiendome un user y pass, y ahi no se lo que poner, por lo que me da un error de validación.

    Cuando he probado a conectarme al servicio desde otra maquina de la misma red a http://192.168.98.79...., no encuentra el servicio ("Esta pagina web no está disponible")

    Saludos


    • Editado marodal84 lunes, 16 de marzo de 2015 17:40
    • Marcado como respuesta marodal84 miércoles, 18 de marzo de 2015 11:06
    lunes, 16 de marzo de 2015 17:16
  • 1-LA otra pc desde la que estas intentando acceder se encuentra en la misma red? o es una ip publica donde tienes el IIS?

    2- has probado  en las opciones de publicacion (clic derecho sobre propiedades y ver opciones depublicacion), seleccionar todos los archivos de este proyecto....

    prueba con todos los archivos del proyecto... y si la maquina que quieres acceder no esta en esa red y no es IP publica no podras acceseder...

    Comenta por favor

    lunes, 16 de marzo de 2015 17:50
  • hola

    >>¿como hago para poder consumirlo desde otro equipo?

    podrias usar la opcion de "Service Reference" imagen

    >>Cuando intento validar la conexión me aparece un Cliente de web deploy, pidiendome un user y pass, y ahi no se lo que poner, por lo que me da un error de validación.

    en el default web site como defines la seguridad ? porque puede que hayas definido que sea integrada con windows por eso pide las credenciales

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 16 de marzo de 2015 18:09
  • Los 2 equipos están en la misma red local. No obstante, si estuvieran en distinta red, podría acceder mediante la ip publica del equipo donde está alojado el webservice, ¿no?

    En cuanto a la seguridad, no se exactamente donde mirar que tipo de seguridad tiene. ¿Puedes indicarme donde hacerlo?

    Gracias y un saludo

    lunes, 16 de marzo de 2015 21:03
  • yo a la hora de crear una aplicación web lo que hago es crear un Application pool independiente con una cuenta de usuario,con suficientes,permisos.

    tal vez debas habilitar la autenticación Windows en tu Default Web Site.

    para ello realiza lo indicado en,

    http://www.iis.net/configreference/system.webserver/security/authentication/windowsauthentication


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    lunes, 16 de marzo de 2015 22:20
  • >>si estuvieran en distinta red, podría acceder mediante la ip publica del equipo donde está alojado el webservice, ¿no?

    depende, no es tan directo exponer un servicio a una red publica, por lo general hay que configurar router para mapear una IP de WAN (publica) con una IP y puerto de LAN (privada)

    ese mapeo se realiza con un port forwarding

    Aplicacion cliente servidor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 17 de marzo de 2015 2:36
  • Pero es que aunque yo publique el servicio como http://localhost/CarpetaServicio/NombreServicio.svc, debería poder hacer referecia a él a través de su ip desde un proyecto que se ejecuta en una maquina de la misma red local.

    No entiendo por que cuando pongo en el browser de la maquina que va a consumir el servicio hhtp://[ip_maquina_servicio]/CarpetaServicio/NombreServicio.svc, no me encuentra nada...

    Saludos

    martes, 17 de marzo de 2015 8:24
  • >>No entiendo por que cuando pongo en el browser de la maquina que va a consumir el servicio hhtp://[ip_maquina_servicio]/CarpetaServicio/NombreServicio.svc, no me encuentra nada.

    que seria "no se encuentra nada" ? una cosa es que tengas un error y otra que no muestre nada

    validaste que el firewall de windows no este bloqueando el acceso

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 17 de marzo de 2015 11:45
  • Con no encuentra nada quiero decir que,

    Si escribo en el browser de la máquina de la misma red local que la de la máquina en la que esta hospedado el servicio: hhtp://[ip_maquina_servicio]/CarpetaServicio/NombreServicio.svc, me aparece el mensaje: Esta página no esta disponible.

    En cambio, si escribo en el browser de la  máquina donde está hospedado el servicio:

    http://localhost/ServiceCalculator/Service1.svc, me conecta con el servicio.

    He probado a desactivar el firewall de la maquina donde quiero consumir el webservice, pero nada, no consigue conectar.

    Un saludo

    martes, 17 de marzo de 2015 17:49
  • Pues finalmente se trataba de un problema de firewall. 

    El firewall de la maquina estaba siendo gestionado por un antivirus que tenía instalado, que no dejaba acceder a la aplicación de la máquina servidora.

    He tenido que desactivar la protección del antivirus en ambos equipos, y ya consigo acceder al servicio desde el cliente.

    Muchísimas gracias por vuestra ayuda!!!!


    • Editado marodal84 miércoles, 18 de marzo de 2015 14:46
    miércoles, 18 de marzo de 2015 11:06