Question

J'ai créé un service WCF (.NET 3.5) qui saisit les données à partir d'un db et retourne une liste d'objets. Il fonctionne très bien. Je l'ai testé en utilisant l'application WCFTestClient et a obtenu les résultats souhaités.

Maintenant, j'ai essayé de créer une application Web ASP.NET et utiliser le service. Après avoir activé <serviceDebug includeExceptionDetailInFaults="true"/> dans le fichier de configuration, le message d'erreur est « référence d'objet non définie à une instance d'un objet. »

Comment puis-je modifier le service pour travailler avec ASP.NET?

Merci!

Mise à jour 1 - J'ai créé une référence au service. Quand je courais mon application de test très basique, basé sur l'exemple de code affiché sur la page Web par défaut du service, je reçu le message « référence d'objet non définie à une instance d'un objet ».

Le service retourne les résultats corrects lorsque j'utilise l'utilitaire de test WCF client fourni avec Visual Studio. Lorsque je tente d'utiliser le code suivant, tous en cas page_load, je reçois le message de référence d'objet.

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();

Je vais essayer d'obtenir des informations de débogage supplémentaires.

Était-ce utile?

La solution

Avez-vous essayé openning le service après l'initialisation en utilisant:

client.Open();

Si le problème persiste encore peut-être le il se trouve sur la méthode WCF elle-même. Essayez d'ajouter des points d'arrêt sur votre méthode et déboguer pour tracer la cause de l'erreur. Vous pouvez également utiliser profileurs.

Autres conseils

Vous devez également configurer le service pour permettre à des détails d'exception dans les résultats. Suivez l'info ici pour y arriver .

Je suppose que votre application ASP.NET attend d'attraper certaines informations du service que vous avez défini pas à fournir, d'où l'erreur d'objet nul.

Je l'ai écrit comme commentaire, mais ne pouvait pas comprendre comment, donc je suppose que je vais tenter une réponse.

Vous Mentionné vous avez utilisé le construit dans le client de test, mais lorsque vous avez créé votre application client (le site Web que vous voulez être appeler votre nouveau service avec) avez-vous configuré, il est le point final (web.config) pour correspondre à la fin de votre service WCF? Par exemple, une application client appelant un service WCF avec point final de wsHttpBinding:

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

En outre, le service retourne une liste, service de référence par défaut que vous avez ajouté à votre client arrête très probablement au tableau. Clic droit sur le service de référence de votre client a maintenant et sélectionnez référence de service de configuration, dans le menu déroulant pour le type de collecte, au lieu de System.Array, sélectionnez System.Collections.Generic.List.

Si vous avez besoin de détails sur la configuration, vérifiez ici http: // msdn. microsoft.com/en-us/library/dd936243.aspx

Placez un point de rupture dans la méthode Page_Load de votre client, vous devriez être en mesure de parcourir votre code client et il sautera automatiquement dans votre service WCF une fois que vous appelez est la méthode, vous pouvez voir exactement où elle échoue. Espérons que cela aide

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top