2010-12-14 41 views
0

J'ai une solution Visual Studio avec un projet Silverlight et un projet Web qui héberge l'application Silverlight. Le projet Web contient également un service Web ASMX appelé par l'application Silverlight. Comme décrit ci-dessous, certains appels au service Web fonctionnent correctement et d'autres provoquent le lancement d'une exception CommunicationException, enveloppant une exception WebException - avec le message "Le serveur a renvoyé l'erreur suivante:" introuvable "".Silverlight4 appelant le service Web ASMX

Tout d'abord, voici ma méthode originale, qui a échoué comme décrit ci-dessus (les noms des entités modifiées pour simplifier):

[WebMethod] 
public Customer GetCustomer(int id) 
{ 
    CustomerDataContext dc = new CustomerDataContext(); 
    return dc.Customers.SingleOrDefault(x => x.Id == id); 
} 

En second lieu, pour déboguer le problème que je pris LINQ to SQL et la base de données hors de l'image, et le code ci-dessous a bien fonctionné:

[WebMethod] 
public Customer GetCustomer(int id) 
{ 
    Customer c = new Customer() { ID=1, Name="Bob", History = new EntitySet<CustomerHistory>() }; 
    return c; 
} 

en troisième lieu, penser à ce sujet, une différence entre les deux méthodes est que la première comprendrait des valeurs dans l'historique des clients. Je tendis la deuxième méthode pour inclure cela, et il a commencé à défaut de nouveau:

[WebMethod] 
public Customer GetCustomer(int id) 
{ 
    Customer c = new Customer() { ID=1, Name="Bob", History = new EntitySet<CustomerHistory>() }; 
    c.History.Add(new CustomerHistory() { Id=1, CustomerId=1, Text="bla" }); 
    return c; 
} 

Je suis coincé en ce qui concerne la façon de progresser - ma pensée actuelle est que cela pourrait être un problème de désérialisation du côté Silverlight, lorsque le graphe d'objets est plus profond. Cela n'a pas de sens rationnel, mais je ne peux pas penser à autre chose. J'ai confirmé que la taille du transfert et la taille du tampon sont assez grandes (2 Go par défaut).

Des pointeurs seraient appréciés.

+0

Avez-vous essayé de retourner une liste de CustomerHistory seulement pour voir si cela fonctionne? – thomasmartinsen

+0

Utilisez-vous une référence de service ou une référence Web? –

Répondre