Domanda

AGGIORNAMENTO 3:
Ho creato un progetto di test di Visual Studio 2008 e ho provato a creare un riferimento al servizio al riferimento al servizio WCF del sito condiviso e ho ricevuto il seguente errore:

  

Si è verificato un errore durante il download   " http: //apps.mydomain/MyService.svc ".   La richiesta non è riuscita con lo stato HTTP   400: Richiesta non valida. I metadati contengono a   riferimento che non può essere risolto:   " http: //apps.mydomain/MyService.svc ".   Tipo di contenuto application / soap + xml;   charset = utf-8 non è stato supportato da   servizio    http: //apps.mydomain/MyService.svc '.   I collegamenti client e di servizio potrebbero essere   non corrispondenti. Il server remoto è tornato   un errore: (415) Impossibile elaborare il   messaggio perché il tipo di contenuto   'Application / soap + xml; charset = utf-8'   non era il tipo previsto 'text / xml;   charset = utf-8 '.. Se il servizio è   definito nella soluzione corrente, provare   costruire la soluzione e aggiungere il   riferimento di servizio di nuovo.

AGGIORNAMENTO 2:
@Nick - Ho provato il tuo suggerimento di impostare esplicitamente l'indirizzo di ciascun endpoint con il percorso completo di ciascun server e ottengo comunque lo stesso risultato.

Inoltre, quando provo a impostare l'attributo hearUri con l'URL del sito condiviso, ricevo un errore 400 richiesta errata invece di un errore 404.

UPDATE
Dopo alcune ricerche aggiuntive, ci sono stati alcuni conflitti di impostazione della configurazione IIS tra http: //apps1.mydomain e http: //apps2.mydomain ed è stato in grado di superare " Applicazione server non disponibile " errore.

Ora sto riscontrando un errore 404 quando ho provato a navigare nel sito condiviso ( http: //apps.mydomain ), ma sono in grado di accedere ai http: //apps1.mydomain e http: //apps2.mydomain riferimento al servizio.

Problema originale

I miei amici usano Microsoft NLB per bilanciare il traffico tra i nostri Server IIS. Di recente ho distribuito un servizio WCF su ciascun server IIS 6 Windows Server 2003 Standard Edition SP1. Ho ricevuto il seguente errore quando ho provato a cercare il nome di dominio condiviso usando IE 7:

  

Applicazione server non disponibile   applicazione Web che stai tentando di   l'accesso su questo server web è attualmente   non disponibile. Premi il & Quot; Aggiorna & Quot;   pulsante nel browser Web per riprovare   la tua richiesta.

     

Nota dell'amministratore: un messaggio di errore   dettagliare la causa di questo specifico   richiesta non riuscita può essere trovata in   registro eventi dell'applicazione del Web   server. Si prega di rivedere questa voce di registro   per scoprire cosa ha causato questo errore   verificarsi.

Il consumatore farà riferimento al http: //apps.mydomain per utilizzare il servizio ma il dominio virtuale è mappato su http: //apps1.mydomain o http: //apps2.mydomain . Se cerco il servizio su ciascun server, non ricevo questo errore.

Il servizio sta attualmente utilizzando un basicHttpBinding anonimo.

Qualcun altro ha riscontrato questo problema?

Cronologia

Prima che iniziasse a verificarsi questo errore, ho ricevuto il seguente errore quando ho passato a tutti e tre i nomi di dominio ( http: //apps.mydomain , http: //apps1.mydomain , http: //apps2.mydomain ):

  

Questa raccolta contiene già un   indirizzo con schema http. Ci può   essere al massimo un indirizzo per schema in   questa raccolta.

Ho usato la classe ServiceHostFactory per personalizzare il mio file .svc per specificare una factory di servizio personalizzata. Quindi creo la nostra fabbrica personalizzata ereditando da ServiceHostFactory e sostituendo come richiesto.

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" %>
È stato utile?

Soluzione

Dopo alcuni esperimenti con diverse configurazioni per il mio servizio WCF e utilizzo di applicazioni. Ho creato un riferimento di servizio a uno dei riferimenti di servizio di lavoro ( http: //apps1.mydomain o http: //apps2.mydomain ) nell'applicazione che consuma. Quindi ho modificato il riferimento dell'endpoint nella configurazione del client in modo che punti all'indirizzo WCF del sito condiviso ( http: //apps.mydomain ) e sono stato in grado di consumare e utilizzare il servizio.

Altri suggerimenti

Ho già avuto un problema con WCF e bilanciamento del carico in cui i server avevano più schede di rete con indirizzi IP diversi e WCF avrebbe semplicemente visualizzato il primo indirizzo IP trovato. Abbiamo dovuto impostare esplicitamente l'indirizzo IP sulla definizione del servizio di ciascun server in modo che WCF si legasse a quello giusto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top