У меня есть asmx сервис, который берет единственный международный параметр. Я могу открыть URL для сервиса и видеть сервисный экран описания. Отсюда я могу ввести параметры запроса в форму и вызвать веб-сервис.
Там какой-либо путь состоит в том, чтобы вызвать веб-сервис непосредственно от URL/строки запроса?
Это не работает:
http://localhost:4653/MyService.asmx?op=MyWebMethod&intParameter=1
Какие-либо идеи? Я действительно хотел бы иметь возможность сделать это из стандартной ссылки из-за некоторых проблем развертывания. Я оказываюсь перед необходимостью обертывать запрос в нормальную aspx страницу?
Вы можете украсить свой метод разрешением HTTP GET запросов, который, в свою очередь, должен делать то, что вы ищете так:
[WebMethod]
[ScriptMethod(UseHttpGet=true)]
public string MyNiftyMethod(int myint)
{
// ... code here
}
И редактировать web. config :
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
Тогда вы сможете вызвать этот метод так:
http://mysite.com/Service.asmx/MyNiftyMethod?myint=12345
EDIT: Обратите внимание, что этот метод выполнения GET-запросов действительно имеет некоторые риски для безопасности. Согласно документации MSDN для UseHttpGet:
Установка свойства UseHttpGet на истинная может представлять угрозу безопасности для ваше заявление, если вы работаете с конфиденциальными данными или транзакциями. В GET-запросах сообщение закодированный браузером в URL-адрес и поэтому является более легкой мишенью для tampering.
веб-службы ASMX используют SOAP. SOAP запросы используют только POST для вызова методов. Для вызова веб-сервиса необходимо сгенерировать прокси-клиент на странице aspx. Если вам действительно нужно использовать глаголы GET для вызова веб-служб, вам может понадобиться другой подход, например WCF REST.
.