Domanda

ho creato un servizio WCF (.NET 3.5), che prende i dati da un db e restituisce un elenco di oggetti. E funziona bene. Ho provato utilizzando l'applicazione WcfTestClient ed ho ottenuto i risultati desiderati.

Ora, ho cercato di creare un'applicazione web ASP.NET e utilizzare il servizio. Dopo aver abilitato <serviceDebug includeExceptionDetailInFaults="true"/> nel file di configurazione, il messaggio di errore è "riferimento oggetto non impostato su un'istanza di un oggetto".

Come faccio a modificare il servizio di lavorare con ASP.NET?

Grazie!

Update 1 - Ho creato un riferimento al servizio. Quando ho eseguito il mio app di test molto semplice, sulla base del codice di esempio visualizzato sulla pagina web predefinita del servizio, ho ottenuto il "riferimento oggetto non impostato su un'istanza di un oggetto" messaggio.

Il servizio sta tornando i risultati corretti quando uso l'utilità client di prova WCF fornito con Visual Studio. Quando cerco di utilizzare il seguente codice, il tutto in Page_Load, ottengo il messaggio oggetto di riferimento.

PhoneNumberServiceClient client = new PhoneNumberServiceClient();

// Use the 'client' variable to call operations on the service
List<PhoneNumber> phones = client.GetPhoneNumbers();  

// Always close the client.
client.Close();

cercherò di ottenere qualche ulteriore informazioni di debug.

È stato utile?

Soluzione

Hai provato openning il servizio dopo aver inizializzato esso utilizzando:

client.Open();

Se il problema persiste forse la si trova sul metodo di WCF in sé. Tenta di aggiungere punti di interruzione sul metodo e debug di rintracciare la causa dell'errore. Si potrebbe anche usare profiler.

Altri suggerimenti

È inoltre necessario configurare il servizio per consentire particolari eccezioni nei risultati. Seguite le informazioni qui per fare che questo accada .

Presumo il tuo ASP.NET applicazione si aspetta di cogliere alcune informazioni dal servizio che non avete configurarlo per fornire, da qui l'errore oggetto null.

avrei scritto questo come commento, ma non riuscivo a capire come, quindi credo che cercherò una risposta.

È menzionate si utilizzato il costruito nel client di test, ma quando è stato creato l'applicazione client (il sito web che si desidera essere chiamando il vostro nuovo servizio con) averti configurato è il punto finale (web.config) in base alla fine del il vostro servizio WCF? Ad esempio, un applicazione client chiama un servizio WCF con wsHttpBinding endpoint:

<configuration>
<system.serviceModel>
    <client>
        <endpoint address="http://localhost:8080/ContractorService" binding="wsHttpBinding" contract="ContractorService.IContractorService"
            name="ContractorService_WsHttp">
        </endpoint>
    </client>
</system.serviceModel>

Inoltre, il servizio sta tornando una lista, la riferimento al servizio di default che si è aggiunto al vostro cliente molto probabile che si ferma a matrice. Fare clic destro il riferimento al servizio vostro cliente ha ora e selezionare riferimento al servizio di configurazione, nella casella a per il tipo di raccolta verso il basso, invece di System.Array, selezionare System.Collections.Generic.List.

Se avete bisogno di informazioni sulla configurazione, controllare qui http: // MSDN. microsoft.com/en-us/library/dd936243.aspx

Mettere un punto di interruzione nel metodo Page Load del vostro cliente, si dovrebbe essere in grado di passare in rassegna il codice cliente e salterà automaticamente nel vostro servizio WCF una volta si chiama è il metodo, allora si può vedere esattamente dove si fallisce. Spero che questo aiuti

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