IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème réception objet par WCF


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut Problème réception objet par WCF
    Bonjour bonjour,

    Bon, je cherche, je cherche, d'ailleurs je cherche toujours.
    J'ai une application n-tiers, donc avec WCF.

    Tout marche bien, je demande des données, je les reçois etc... sans problème.

    J'ai ajouté dans ma BLL (côté serveur) une classe contenant des fonctions qui retourne des exceptions dérivées.
    Un truc du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Public Class LogManager
     
           Public Sub New()
           End Sub
     
          Public shared Function LogicalExecption () As CommonException
     
               Return Exc As New CommonException("test")
     
           End Function
     
    End Class
    Je regénére le WCF etc...
    En Debug, le WCF est local sur ma machine.

    Quand depuis l'UI, je fais appel à cette fonction, le code va bien jusqu'à la fonction, génère l'objet, mais au retour du WCF, j'ai une erreur sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim result =  proxy.Service.LogManager_LogicalExecption ()

    A first chance exception of type 'System.ServiceModel.CommunicationException' occurred in mscorlib.dll

    Additional information: An error occurred while receiving the HTTP response to http://localhost:49317/Service.svc. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.
    Et ça ne fonctionne pas QUE pour les fonctions de cette classes... JE me doute donc qu'il y a quelque chose à voir avec le type retourné...
    J'ai essayé de rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <KnownType(GetType(LogManager))> _
    <KnownType(GetType(CommonException))> _
    <DataContract()> _
    Ca ne change rien...

    Une autre piste : Mes CommonException n'ont pas de constructeur vide... du coup je me dis que c'est ce qu'il pêche... Mais si c'est le problème, ça va être dur de corriger car je n'ai pas la main sur ces classes...

    Si quelqu'un à une piste... Grand merci d'avance

  2. #2
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Bonjour, en WCF on ne propage jamais des exception classique, on utilise les FaultException.

    https://msdn.microsoft.com/en-us/library/ee942778.aspx

  3. #3
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Ah ouais d'accord...

    Je pensai que des exceptions dérivées ne poseraient pas de problème...
    On envoi bien tout type de classe complexe... Mais si c'est dérivé d'une exception, on ne peut pas. Super.

    Merci bien en tout cas.

  4. #4
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Cela est tout à fait normal à la fois pour des raisons de sécurités, mais aussi pour des raisons de séparations de couches.
    Mais tu peut renvoyer le message que tu désire à travers ta FaultExcept.

    Cordialement

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Cela est tout à fait normal à la fois pour des raisons de sécurités, mais aussi pour des raisons de séparations de couches.
    Pas très d'accord sur le fond.

    Le WCF peut très bien renvoyer des FaultException pour ses problèmes à lui, ou en transformant une exception de la couche au dessus qui aurait été Throw...

    Mais interdire qu'une fonction retourne un objet d'un type dérivé de Exception... Je ne vois pas le rapport...

    C'est la différence entre un Return et un Throw

  6. #6
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Tu oublies que WCF a une vocation très generique, entre des services Full rest et des services windows tu as des notion très différentes. Imagine que tu développe un service Windows qui communique avec des applications développés en C, C++, Java ect.... Aurais-ce un sens pour un développeur C de recevoir une exception du core .Net, même question pour dev full stack web?

    Concernant la sécurité, une personne malveillante, de type script kidies, cherche à connaitre un maximum d'information sur le socle technique employé afin de télécharger le meilleur script d'exploitation de faille. Si tu renvoie toute la stack .Net il est possible que ces informations soit en clair, tu lui facilite la tache.

    Il y a aussi une raison technique dû aux briques de base qui devraient dès lors posséder des décorations de type DataContract,.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème pour recopier mon objet par serialisation
    Par jacko842 dans le forum C#
    Réponses: 1
    Dernier message: 14/05/2015, 23h55
  2. Problème récupération d'un objet avec WCF
    Par pivox dans le forum Windows Communication Foundation
    Réponses: 7
    Dernier message: 10/05/2014, 23h46
  3. problème lors l'ajout d'un objet par souris
    Par info_sara dans le forum Ogre
    Réponses: 0
    Dernier message: 03/04/2012, 15h11
  4. Problème tri objet par ordre alphabétique
    Par scary dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 08/03/2009, 22h14
  5. Probléme d'insertion par défault
    Par xavier62 dans le forum SQL
    Réponses: 7
    Dernier message: 28/11/2003, 13h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo