2009-10-05 6 views
17

J'ai construit un service standard .NET asmx. Comment est-ce que je surcharge des méthodes Web dans ce service? WS-I (interopérabilité des services Web) WS-I ne prend pas en charge la surcharge.Les méthodes Web peuvent-elles être surchargées?

+0

Le problème est que le compilateur ne sera pas l'attraper et la Le message d'erreur ne vous fournit pas beaucoup d'informations: "Le service (x) sur l'ordinateur local a démarré puis s'est arrêté, certains services s'arrêtent automatiquement s'ils ne sont pas utilisés par d'autres services ou programmes". – NicVerAZ

Répondre

20

+4

Vous pouvez le faire en désactivant la compatibilité WS-I, mais je ne peux pas me résoudre à proposer cela comme réponse ;-p Pour toutes les intentions sensibles, c'est (IMO) la bonne réponse. –

0

Les noms de méthodes de service Web doivent être uniques.

1

Oui.

L'attribut WebMethod prend un paramètre MessageName qui vous permet de "surcharger" la méthode.

13

Vous ne pouvez pas vraiment surcharger une méthode Web. Quand vous y réfléchissez, cela a du sens car une méthode web est conçue pour ne pas dépendre de technologies sous-jacentes telles que les langages OO, car elle peut théoriquement fonctionner dans des choses comme COBOL.

Alors que vous pouvez écrire une méthode Web qui ressemble, il peut être surchargé, vous avez réellement à lui attribuer un autre nom, comme dans:

[WebMethod] 
public void Add(int x, int y) 
{ 
} 
[WebMethod(MessageName="AddFloat")] 
public void Add(float x, float y) 
{ 
} 
Questions connexes