2009-10-05 3 views
17

Я создал обычную службу .NET asmx. Как перегрузить веб-методы в этой службе?Можно ли перегружать веб-методы?

+0

Вопрос заключается в том, что компилятор не поймает его, и Сообщение об ошибке не предоставляет вам много информации: «Служба (x) на локальном компьютере началась, а затем остановлена. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами». – NicVerAZ

ответ

20

WS-I (совместимость с веб-сервисами) не поддерживает перегрузку.

+4

Вы можете сделать это, отключив совместимость WS-I, но я не могу заставить себя предложить это как ответ ;-p. По всем разумным намерениям это (ИМО) правильный ответ. –

0

Нет. Имена методов веб-сервиса должны быть уникальными.

1

Да.

Атрибут WebMethod принимает параметр MessageName, который позволяет «перегрузить» метод.

13

Вы не можете перегружать веб-метод. Когда вы думаете об этом, это имеет смысл, потому что веб-метод разработан, чтобы не полагаться на базовые технологии, такие как языки OO, поскольку он теоретически может работать в таких вещах, как COBOL.

В то время как вы можете написать веб-метод, который выглядит, как он может быть перегружен, вы на самом деле нужно присвоить ему другое имя, например:

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