"Форма теста доступна только для запросов с локальной машины".
Я создал веб-службу в .NET, поэтому адрес служебного файла содержит отличное автогенерированное объяснение того, как он работает. Когда я запускаю страницу с машины, на которой он размещен, даже имеет форму, которую я могу использовать для отправки тестовых значений в службу. Однако на удаленных машинах он скрывает форму и дает сообщение, как показано выше.
Есть ли смысл в этом? Я видел, что другие сайты называют это "более безопасным", но каждый может создавать свои собственные формы, легко делая это не более чем неприятностью, если вы спросите меня.
Ответы
Ответ 1
Если вы публикуете метаданные, а это общедоступный/незащищенный веб-сервис, вы правы, было бы легко, чтобы кто-нибудь мог создать простого клиента, чтобы отработать ваш веб-сервис. В этом случае наличие веб-клиента, созданного только на локальной машине, кажется неприятным.
Если ваша служба является частной и защищенной, однако, это будет огромная дыра в безопасности, предоставляющая кому-либо имя сервера и обслуживание аутентифицированного клиента для потенциального доступа к вашим данным и нанесения всех видов вреда.
Я полагаю, что политика создания пользовательского интерфейса для веб-служб ASMX только на самом сервере была попыткой предоставить некоторые полезные инструменты, исключив случайные дыры в безопасности. WCF покончил с этим в любом случае, вы можете создавать клиентов только в том случае, если метаданные публикуются, и им необходимо внедрить правильную защиту для доступа к сервисам.
Ответ 2
Вы можете обойти эту проблему, изменив свой web.config
, чтобы включить эти узлы:
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
Это позволит вам посетить веб-службу .asmx через ваш браузер. Затем вы можете вызвать веб-службы прямо в своем браузере, передать аргументы и просмотреть результаты.
Ответ 3
Просто FYI Я использую .NET 4.0 и имею эту же проблему.
Однако я использовал...
<add name="HttpSoap12"/>
<add name="HttpSoap"/>
<add name="HttpGet"/>
<add name="HttpPost"/>
В тех же областях, и это сработало. Но только с HttpGet
и HttpPost
этого не произошло.
Ответ 4
![enter image description here]()
HTTP GET и HTTP POST отключены по умолчанию