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

  1. #1
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    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
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  2. #2
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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
    Points : 1 118
    Points
    1 118
    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
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  3. #3
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    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.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  4. #4
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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
    Points : 1 118
    Points
    1 118
    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
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  5. #5
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    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
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  6. #6
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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
    Points : 1 118
    Points
    1 118
    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,.
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  7. #7
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Citation Envoyé par worm83 Voir le message
    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?
    Tout à fait, du coup pour moi, une application .NET utilisant les service web perds énormément des avantages de .NET car on a le goulo d'étranglement technique du service WCF...
    Franchement, je vois de moins en moins d'avantage à l'utiliser pour une application locale, à part pour une appli avec 500 postes clients.


    Citation Envoyé par worm83 Voir le message
    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.
    +1, mais une fois de plus, je trouve que c'est un défaut du WCF.


    Citation Envoyé par worm83 Voir le message
    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,.
    Ben non justement, dans le dernier Framework les décorations ne sont pas nécessaires... seulement pour les types qu'il aime bien donc...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  8. #8
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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
    Points : 1 118
    Points
    1 118
    Par défaut
    En service windows tu as aussi un goulot d'étranglement, même si il est moindre, ce goulot est tout simplement la sérialisation (qu'il soit binaire ou Json, ou XML ect...).
    Tu n'as pas toujours le choix de l'infrastructure et de qui consome les services. Si tes services sont consommé uniquement par des stack web, tu ne pourra pas faire du service windows, et quelque soit la techno tu aura toujours cette sérialisation inhérente, ou alors j'ai pas bien compris ta remarque.

    Pour la sécurité, c'est justement la raison d'être de ces FaultException, ne pas remonter toute la stack, mais juste la raison de l'erreur ("Mauvais login ou mot de passe utilisé" par exemple ect.....).
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  9. #9
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    En effet, en effet...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

+ 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: 15/05/2015, 00h55
  2. Problème récupération d'un objet avec WCF
    Par pivox dans le forum Windows Communication Foundation
    Réponses: 7
    Dernier message: 11/05/2014, 00h46
  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, 16h11
  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, 23h14
  5. Probléme d'insertion par défault
    Par xavier62 dans le forum SQL
    Réponses: 7
    Dernier message: 28/11/2003, 14h03

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