Pregunta

ACTUALIZACIÓN 3:
Creé un proyecto de prueba de Visual Studio 2008 e intenté crear una referencia de servicio a la referencia de servicio WCF de sitio compartido y recibí el siguiente error:

  

Se produjo un error al descargar   ' http: //apps.mydomain/MyService.svc '.   La solicitud falló con el estado HTTP   400 Petición Incorrecta. Los metadatos contienen un   referencia que no se puede resolver:   ' http: //apps.mydomain/MyService.svc '.   Tipo de contenido application / soap + xml;   charset = utf-8 no fue compatible con   Servicio    http: //apps.mydomain/MyService.svc '.   Los enlaces de cliente y servicio pueden ser   no coinciden El servidor remoto regresó   un error: (415) No se puede procesar el   mensaje porque el tipo de contenido   'aplicación / jabón + xml; juego de caracteres = utf-8 '   no era el tipo esperado 'text / xml;   charset = utf-8 '.. Si el servicio es   definido en la solución actual, intente   construyendo la solución y agregando el   referencia de servicio nuevamente.

ACTUALIZACIÓN 2:
@Nick: probé su sugerencia de establecer explícitamente la dirección de cada punto final con la ruta totalmente calificada de cada servidor y sigo obteniendo el mismo resultado.

Además, cuando intento configurar el atributo listenUri con la URL del sitio compartido, recibo un error de solicitud incorrecta 400 en lugar de un error 404.

ACTUALIZACIÓN
Después de una investigación adicional, hubo algunos conflictos de configuración de IIS entre http: //apps1.mydomain y http: //apps2.mydomain y pudo superar el " Aplicación de servidor no disponible " error.

Ahora recibo un error 404 cuando intenté navegar hacia el sitio compartido ( http: //apps.mydomain ), pero puedo navegar a http: //apps1.mydomain y http: //apps2.mydomain referencia de servicio.

Problema original

Mi empresa utiliza Microsoft NLB para cargar el tráfico de equilibrio entre nuestro Servidores IIS. Recientemente implementé un servicio WCF en cada servidor IIS 6 Windows Server 2003 Standard Edition SP1. Recibí el siguiente error cuando intenté buscar el nombre de dominio compartido usando IE 7:

  

Aplicación de servidor no disponible   aplicación web que está intentando   el acceso en este servidor web es actualmente   indisponible. Presiona & Quot; Actualizar & Quot;   botón en su navegador web para volver a intentar   tu petición.

     

Nota del administrador: un mensaje de error   detallando la causa de este específico   solicitud de error se puede encontrar en el   registro de eventos de la aplicación de la web   servidor. Por favor revise esta entrada de registro   para descubrir qué causó este error   ocurrir.

El consumidor apuntará a http: //apps.mydomain para usar el servicio, pero el dominio virtual está asignado a http: //apps1.mydomain o http: //apps2.mydomain . Si busco el servicio en cada servidor, no recibo ese error.

El servicio actualmente está utilizando un anónimo basicHttpBinding.

¿Alguien más ha experimentado este problema?

Historial

Antes de que este error comenzara a ocurrir, recibí el siguiente error cuando cambié a los tres nombres de dominio ( http: //apps.mydomain , http: //apps1.mydomain , http: //apps2.mydomain ):

  

Esta colección ya contiene un   dirección con esquema http. Allí pueden   ser como máximo una dirección por esquema en   esta colección.

Utilicé la ServiceHostFactory clase para personalizar mi archivo .svc para especificar una fábrica de servicios personalizados. Luego creo nuestra fábrica personalizada heredando de ServiceHostFactory y anulando según sea necesario.

public class MyFactory : ServiceHostFactory
{
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        return new ServiceHost(serviceType, baseAddresses[0]);
    }
}

<%@ ServiceHost Language="C#" Factory="MyFactory" Debug="true" Service="MyService" CodeBehind="~/App_Code/MyService.cs" %>
¿Fue útil?

Solución

Después de experimentar con diferentes configuraciones para mi servicio WCF y la aplicación de consumo. Creé una referencia de servicio a una de las referencias de servicio en funcionamiento ( http: //apps1.mydomain o http: //apps2.mydomain ) en la aplicación consumidora. Luego cambié la referencia del punto final en la configuración del cliente para que apunte a la dirección WCF del sitio compartido ( http: //apps.mydomain ) y pude consumir y utilizar el servicio.

Otros consejos

He tenido un problema antes con WCF y el equilibrio de carga donde los servidores tenían múltiples tarjetas de red con diferentes direcciones IP y WCF simplemente mostraba la primera dirección IP que encontró. Tuvimos que establecer explícitamente la dirección IP en la definición de servicio de cada servidor para que WCF se uniera a la correcta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top