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

Windows Communication Foundation .NET Discussion :

Probleme de communication Entity Framework avec Silverlight-enabled WCF service pour afficher une DataGrid [Débutant(e)]


Sujet :

Windows Communication Foundation .NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Probleme de communication Entity Framework avec Silverlight-enabled WCF service pour afficher une DataGrid
    Salut tout le monde, je suis nouveau en .Net et surtout Silverlight + WCF
    donc j'ai une solution en couches :
    DAL : Entity Framework
    DAO : pour les CRUD
    Silverlight : pour les interfaces
    et Web

    donc je veut afficher une DataGrid avec une List<Person> de la base en utilisant les wcf et entity framework.

    l'erreur que j'ai :
    Server NotFound
    et en utilisant Fiddler j'ai l'exception :
    System.Xml.XmlException: Le préfixe «*x*» n’est pas défini.
    à System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)
    à System.Xml.XmlBaseReader.LookupNamespace(PrefixHandleType prefix)
    à System.Xml.XmlBinaryReader.ReadNode()
    à System.Xml.XmlBinaryReader.Read()
    à System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
    à System.Xml.XmlDocument.Load(XmlReader reader)
    à BinaryMessageFiddlerExtension.BinaryInspector.LoadMessageIntoDocument(Byte[] encodedMessage)
    à BinaryMessageFiddlerExtension.BinaryInspector.GetWcfBinaryMessageAsText(Byte[] encodedMessage)
    à BinaryMessageFiddlerExtension.BinaryInspector.UpdateView(Byte[] bytes)
    mon service WCF :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    [ServiceContract(Namespace = "")]
        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
        public class Service1
        {
            [OperationContract]
            public List<PERSON> getAllPerson()
            {
                Class1 c = new Class1();
                List<PERSON> listedepersonne;
                listedepersonne = c.getAllFacilities();
                return listedepersonne;
            }
        }
    }

    mon fichier web.config coté serveur
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <configuration>
        <system.web>
            <compilation debug="true" targetFramework="4.0" />
        </system.web>
      <connectionStrings>
        <add name="Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=localhost/xe;PASSWORD=rami;PERSIST SECURITY INFO=True;USER ID=RAMI&quot;" providerName="System.Data.EntityClient" />
      </connectionStrings>
     
      <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior name="">
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <bindings>
          <basicHttpBinding>
            <binding name="SilverlightApplication1.Web.Service1.customBinding0">
              <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
            </binding>
          </basicHttpBinding>
        </bindings>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
          multipleSiteBindingsEnabled="true" />
        <services>
          <service name="SilverlightApplication1.Web.Service1">
            <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SilverlightApplication1.Web.Service1.customBinding0"
              contract="SilverlightApplication1.Web.Service1" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
          </service>
        </services>
      </system.serviceModel>
    </configuration>

    (j'ai essayer le basicHttpBinding et custumBinding )

    mon fichier de binding coté client :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <configuration>
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="BasicHttpBinding_Service1" maxBufferSize="2147483647"
                        maxReceivedMessageSize="2147483647">
                        <security mode="None" />
                    </binding>
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://localhost:53225/Service1.svc" binding="basicHttpBinding"
                    bindingConfiguration="BasicHttpBinding_Service1" contract="ServiceReference1.Service1"
                    name="BasicHttpBinding_Service1" />
            </client>
        </system.serviceModel>
    </configuration>

    et biensur l'appel coté client (silverlight 4) :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void datagrid(object sender, RoutedEventArgs e)
            {
                ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
                client.getAllPersonCompleted +=new EventHandler<ServiceReference1.getAllPersonCompletedEventArgs>(client_getAllPersonCompleted);
                client.getAllPersonAsync();
            }
     
            private void client_getAllPersonCompleted(object sender, ServiceReference1.getAllPersonCompletedEventArgs e)
            {
                dataGrid1.ItemsSource = e.Result;
            }

    ça fait 3 jours et j'ai presque fouillé tout le net
    quelqu'un a rencontré cette exception ?!
    merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    À ce qu'il parait ton application silverlight n'arrive pas à communiquer avec ou à trouver) ton service WCF.

    Je pense tu devrais changer la ligne
    ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();par
    ServiceReference1.Service1Client client = new ServiceReference1.Service1Client("BasicHttpBinding_Service1");où BasicHttpBinding_Service1 est le nom du endpoint qui se trouve déjà configuré dans le fichier de configuration côté client.

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut salut
    merci beaucoup pour votre réponse. j'ai déjà essayé de passer le name du binding en parametre lors de la creation du proxy mais ca donne rien Toujours la même exception.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bizarre !

    Vérifies, via un navigateur, si tu arrives à accéder aux métadonnées de ton service.

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    je ne sais pas si j'ai bien compris, mais quand je tape http://localhost:53225/service1.svc ça marche très bien.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Peut-on voir l'implémentation de la méthode getAllFacilities(); ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    voila je récupere une liste de person et PERSON à une association 0-N avec une autre table (je ne sais pas si ca influence).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public List<PERSON> getAllFacilities()
            {
                List<PERSON> liste;
                using (Entities entity = new Entities())
                {
                    liste = (from x in entity.PERSON select x).ToList();
                }
                return liste;
            }

  8. #8
    Invité
    Invité(e)
    Par défaut
    Si tu utilises Entity Framework 4.0 ou version supérieure sache le lazy loading est activé par défaut avec ces versions et WCF n'aime pas trop lorsque cette propriété a la valeur true.

    Pour en revenir à ton problème dont le message d'erreur n'est pas explicite vu que t'arrives à accéder au WSDL via le navigateur, le mieux c'est de désactiver le lazy loading et voir ce que ça donne :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public List<PERSON> getAllFacilities()
            {
                List<PERSON> liste;
                using (Entities entity = new Entities())
                {
                    entity.ContextOptions.LazyLoadingEnabled = false;
                    liste = (from x in entity.PERSON select x).ToList();
                }
                return liste;
            }

  9. #9
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    oui probleme résolut merci bcp

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

Discussions similaires

  1. [EDMX] Entity Framework avec le .NET Framework 3.5 seulement?
    Par takinelinfo dans le forum Entity Framework
    Réponses: 7
    Dernier message: 25/05/2011, 21h04
  2. [VB.NET] Entity Framework avec table lié
    Par tito55 dans le forum Entity Framework
    Réponses: 4
    Dernier message: 05/05/2011, 15h52
  3. Réponses: 1
    Dernier message: 21/03/2011, 11h50
  4. Question Entity Framework et Silverlight
    Par wil4linux dans le forum Entity Framework
    Réponses: 4
    Dernier message: 27/04/2010, 23h43
  5. ADO.NET Entity Framework, Astoria, Silverlight -> .NET 3.5 ?
    Par rad_hass dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 08/07/2008, 16h01

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