Domanda

Sto cercando di eseguire un WCF ServiceHost come servizio NT su uno SP1 di Windows Server 2007. Il ServiceHost è reponsible per ospitare un singolo endpoint del servizio: un basicHttpBinding con il seguente indirizzo:

http://localhost:5555/ToBlah

Quando ho eseguito questo ServiceHost sulla mia macchina locale (Windows XP), funziona benissimo - quando ho postare un messaggio SOAP ad esso, mi rimetto un codice HTTP 202 ( "Accettato"), che è la risposta corretta per il mio servizio, perché il contratto ha IsOneWay = true. Tuttavia, quando si esegue questo sul mio Server 2007, ottengo 503 errori quando provo a chiamare il servizio. Ho la registrazione dei messaggi WCF girato "tutta la strada fino," ma io non sto vedendo alcuna registrazione di sorta, il che mi porta a credere che questo sta accadendo a un livello inferiore rispetto WCF (la chiamata non ottiene mai lo "strato" WCF ).

I sys-admin e ho provato varie forme di comandi httpcfg, ma senza fortuna finora.

So cercando di ospitare questo in IIS potrebbe essere una possibile soluzione, ma il nostro server di produzione di app non è installato IIS, quindi vorrei fare funzionare il proprio servizio come ServiceHost.

Tutte le idee sarebbe molto apprezzato!

È stato utile?

Soluzione

Mi sembra che sia un firewall sul server o un'altra impostazione di configurazione sta bloccando la porta.

Se no, allora il servizio potrebbe trattarsi di un errore durante la creazione della istanza dell'oggetto ServiceHost o durante la creazione del endpoint del servizio, e l'errore è per qualche motivo non intrappolato (?). Si potrebbe scrivere un po 'di semplice ciclo di prova interno all'interno del codice di servizio per verificare che l'endpoint del servizio è stato creato correttamente. Che potrebbe rivelare qualcosa di interessante.

Inoltre, l'esecuzione di un client da quel server e la connessione al servizio in esecuzione sulla macchina di sviluppo potrebbe dire qualcosa di più? Si potrebbe utilizzare WCFTestClient.exe, come riferito qui: E 'possibile far funzionare WcfTestClient per canali di trasporto personalizzato? . Questo potrebbe dare ulteriori informazioni. Tuttavia, è necessario sostenere MetadataExchange (Mex) nel vostro servizio al fine di utilizzare tale client di prova.

In alternativa, è possibile utilizzare i campioni WCF dalla cartella di Visual Studio 2008 campioni, in combinazione con WCFTestClient.exe per testare alcuni servizi che sono self-hosted e sono tenuti a lavorare correttamente, in primo luogo all'interno del server e quindi al di fuori della server.

Altri suggerimenti

Beh, non riesco ancora a farlo funzionare sui server di Vista - è ancora dando 503 errori, ma ho finito per ottenerlo l'installazione su un server di Windows 2003, e sembra di essere al lavoro adesso

.

Una cosa ho imparato in questo processo è stato l'uso di HttpCfg.exe per consentire a un utente di aprire una porta HTTP non standard.

In pratica ho dovuto correre qualcosa di simile al seguente comando:

httpcfg.exe set urlacl /u http://+:5555/ /a "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)"

È quindi possibile visualizzare le impostazioni URL ACL con questo comando:

httpcfg.exe query urlacl

Su Vista, è possibile eseguire gli stessi tipi di comandi utilizzando netsh (vedi link sotto).

Purtroppo, questo ha preso un po 'per capire, ma è stata una buona esperienza di apprendimento.

Ecco alcuni link che ho pensato fosse utile a capire questo fuori:

Cosa identity è configurato per il servizio NT? Per isolare il problema, provare a utilizzare un account locale-admin per verificare se questo problema è legato autorizzazione.

Se si utilizza Windows Vista o Windows 7 è necessario utilizzare "netsh", che è più facile da usare come bene.

  • Account utente locale:

    netsh http add urlacl url=http://+:8001/ user=ComputerName\Username

  • Account utente di dominio:

    netsh http add urlacl url=http://+:8001/ user=DomainName\Username

  • Built-in account NetworkService:

    netsh http add urlacl url=http://+:8001/ user="NT AUTHORITY\NETWORK SERVICE"

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