2012-06-21 20 views
6

ha appena distribuito il servizio WCF su un server qui nella mia azienda utilizzando IIS 7.5 e tutto sembra funzionare correttamente. Ma quando installo la mia applicazione client e aggiungo un riferimento al server al server e poi uso questo codice.Applicazione client servizio WCF che ottiene "Oggetto non impostato su un'istanza di un oggetto"

ServerReference.ServiceClient client = new ServerReference.ServiceClient(); 

var s = client.GetBrand("Audi", false); 

ottengo un'eccezione che dice "riferimento oggetto non impostato a un'istanza di un oggetto". l'oggetto s non dovrebbe b nullo (abbiamo provato il servizio su localhost dove l'avevamo tutto nello stesso progetto in cui funzionava).

Hai guardato lo stackstrace e sembra così.

21.6.2012 16:16:29 

riferimento non impostato a un'istanza di un oggetto.

Server stack trace: 
    at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter) 
    at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

Eventuali suggerimenti ?? P.S La CPU in cui è ospitato il servizio WCF non ha studi visivi, quindi non riesco a eseguirne il debug

+2

Does [WcfTestClient] (http://msdn.microsoft.com/en-us/library/bb552364.aspx) funziona nel servizio ospitato? Riducetelo per vedere se è la vostra implementazione o se il servizio non riesce a inizializzarsi.Il contratto potrebbe anche essere cambiato (a seconda dell'ultima volta che hai ottenuto i metadati) potrebbe causare l'impossibilità di istanziare il servizio. –

risposta

2

Come suggerito in un commento, assicurati di poter ottenere i dati utilizzando WcfTestClient. Ciò conferma che il servizio funziona, e quasi unit-test la chiamata al metodo che garantisce che funzioni dal punto di vista del cliente.

In secondo luogo, (a meno che non venga annacquato per postare su SO) utilizzare correct WCF call method per evitare questo tipo di problemi. Una volta che si introduce una dipendenza è sempre una buona idea di anticipare per gli errori (anche se il vostro servizio, connessione a Internet del cliente, o altro).

Senza sapere altro sul tuo progetto, è difficile descrivere come risolverlo. Fattori come vecchio WSDL, mal configurato * .config, endpoint non esposto sul server e altri problemi potrebbero essere la radice del problema, ma dato quello che hai mostrato non ho idea di quale potrebbe essere.

Se è possibile fornire ulteriori informazioni sarò lieto di aggiornare la mia risposta con ulteriori consigli che potrei avere. Per ora, dare un'occhiata al enabling WCF tracing sul server in modo da poter guardare indietro attraverso il registro (s) e vedere se qualcosa è afoul sull'estremità del server (oltre a fare un passo attraverso la chiamata del vostro cliente e controllo).

+0

al momento il tracciamento WCF funziona al momento (non capisco il perché) ... secondo me la ricerca di oggi ha qualcosa da legare. Una cosa che ho notato e fint interessante è che quando im usando un client di test e chiamo il servizio che si trova su un localhost e lo chiamo con un parametro null restituisce lo stesso errore del servizio in hosting di IIS (con ogni parametere). È qualcosa da considerare, p? C'è qualcos'altro che vorresti che io inserissi qui per capire meglio – user1279173

1

Non è necessario eseguire il debug attraverso di essa. Basta aggiungere l'impostazione della traccia WCF nel web.config e ottenere informazioni sull'errore di origine. Vedi http://msdn.microsoft.com/en-us/library/ms733025.aspx

+0

copiare il codice e messo nel mio webconfig, e non è successo nulla. Nessun file è stato creato o cose simili – user1279173

+0

Stai eseguendo il servizio WCF in un pool di app con un'identità diversa? Se è così, è necessario assicurarsi che abbia i diritti di controllo completo sulla directory in questione. Penso che con il tracciamento del livello Informazioni, puoi testare semplicemente sfogliando il servizio, potresti aver bisogno del livello Verbose. – Rich

0

Ho lo stesso problema nel mio progetto, nel mio caso ho trovato che l'eccezione si è verificata nella funzione di costruzione del servizio ma è attivata solo quando chiamo un metodo.

0

Configurare le origini di traccia per emettere tracce e impostare i livelli di traccia, impostare la traccia attività e la propagazione per supportare la correlazione di traccia end-to-end e impostare i listener di traccia per accedere alle tracce.

di Windows Communication Foundation (WCF) emette i seguenti dati per l'analisi diagnostica: Tracce per le tappe del processo in tutti i componenti delle applicazioni, come le chiamate di funzionamento, le eccezioni di codice, avvisi e altri eventi di elaborazione significativi. eventi di errore di Windows quando la funzione di tracciamento malfunzionamenti. Vedi Event Logging in WCF.

Problemi correlati