ASP.net - веб-сервисы - доступны только через локальный хост - PullRequest
0 голосов
/ 16 марта 2012

Я работаю над сайтом, который предоставляет набор веб-сервисов в папке на сайте:

services
--- servicea.asmx
--- serviceb.asmx

Эти службы настроены для обеспечения некоторой совместимости с другими сайтами, которые мы контролируем, и все они находятся на одном сервере.

Сайт использует проверку подлинности на основе форм asp.net, но папка служб исключена из этого, и каждая служба выполняет свою собственную проверку подлинности при вызове метода и проверяет, что он получает доступ только с локального адреса, и это прекрасно работает .

Однако, если я получаю доступ к services / servicea.asmx с внешнего адреса, я все равно вижу список доступных методов. Я не могу эффективно вызвать ни один из этих методов с внешнего адреса, как и должно быть, но мне неудобно выставлять наш внутренний API таким образом. Есть ли способ, чтобы файл asmx не отвечал списком методов при доступе вне коробки?

1 Ответ

1 голос
/ 16 марта 2012

Вы сможете добавить следующее в ваш файл web.config:

<system.web.services>
    <protocols>
        <remove name="Documentation"/>
    </protocols>
</system.web.services>

Это должно скрыть страницу описания сервиса.

См. http://msdn.microsoft.com/en-us/library/b2c0ew36%28v=vs.100%29.aspx для получения дополнительной информации - обратите внимание, что это также не позволяет клиенту генерировать прокси-класс WSDL, поэтому это может стать реальным препятствием для простоты реализации.

Сокрытие имен методов не заменяет безопасность, поэтому вы можете подумать, нужно ли вам это делать или нет.

...