2009-10-24 5 views
1

Cela peut être très facile, mais ce que j'essaie de faire ici, c'est que j'essaie de passer un objet client à une méthode de service Web. La classe Customer est sur l'espace de nom Entity et elle est sérialisable, et j'ajoute une référence à mes deux applications ASP.NET qui appellent le service web et transmettent Entity.Customer Object et aussi WebService qui accepte Enity.Customer Object.Passer l'entité sur le service Web ASP.NET

Web Service Méthode

[WebMethod] 
public void AddCustomer(Entity.Customer c) 
{} 

ASP.NET applcation

Entity.Customer c = new Entity.Customer; 
webservice.AddCustomer(c); 

Erreur

Le match de la meilleure méthode surchargée pour « TestApplication.localhost.Service1.AddCustomer (TestApplication.localhost.Customer) 'a des arguments non valides

Je tri Si vous modifiez le service Web pour accepter l'objet et que vous copiez cet objet par la suite sur Customer.Entity, l'application se compile mais j'obtiens des erreurs de génération XML.

+0

Pourriez-vous appuyer sur F12 pour accéder à la définition de la méthode AddCustomer générée et coller la déclaration ici? – popester

Répondre

0

Souvent, les méthodes d'assistance générées via une méthode de service attendent les objets générés localement, car certains éléments des objets côté serveur ne sont pas sérialisés ou sont gérés différemment en raison de la sérialisation.

Essayez:

TestApplication.localhost.Customer c = new TestApplication.localhost.Customer(); 
webservice.AddCustomer(c); 

De cette façon, vous utilisez les objets générés, avec les propriétés sérialisés correctement, plutôt que l'objet original.

1

Générez-vous la méthode de service Web à l'aide de la méthode "Ajouter une référence Web" dans Visual Studio?

Ceci est un problème de compilation? Votre application ne veut pas compiler? Passez simplement à la définition de la méthode et assurez-vous de transmettre le même objet client que celui spécifié dans la définition de la méthode. En général, la méthode de service Web générée génère une version proxy de l'objet et vous devez transmettre cette même classe.

+0

Merci pour votre réponse. C'est exactement ce que je faisais. J'ai compris ça plus tard. – Bishal