Подтвердить что ты не робот

Можно вызвать службу ASMX с параметром через строку запроса url?

У меня есть служба asmx, которая принимает один параметр int. Я могу открыть URL-адрес службы и посмотреть экран описания службы. Отсюда я могу ввести параметры запроса в форму и вызвать веб-службу.

Есть ли способ вызвать веб-службу непосредственно из строки URL/запроса?

Это не работает:

http://localhost:4653/MyService.asmx?op=MyWebMethod&intParameter=1

Любые идеи? Мне очень хотелось бы иметь возможность сделать это со стандартной ссылки из-за некоторых проблем с развертыванием. Должен ли я обернуть запрос на обычной странице aspx?

4b9b3361

Ответ 1

Вы можете украсить свой метод, чтобы разрешить 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 для true может представлять угрозу безопасности для ваше приложение, если вы работаете с конфиденциальными данными или транзакциями. В запросах GET сообщение закодированный браузером в URL-адрес и поэтому является более легкой мишенью для фальсификации.

Ответ 2

Веб-службы ASMX используют SOAP. Запросы SOAP используют только POST для вызова методов. Вам нужно будет создать прокси-клиент на странице aspx для вызова веб-службы. Если вам действительно нужно использовать GET-глаголы для вызова веб-служб, вам может потребоваться использовать другой подход, например WCF REST.