На II7 мы размещаем API на основе WCF / asp.net. Чтобы пользователи классического asp-приложения могли подключаться к API, нам пришлось опубликовать версию, которую мы называем «транспортной». Эта транспортная версия также написана на asp.net, она указывает на ту же сборку, но отличается только уровень безопасности, позволяющий аутентифицировать классический asp. Безопасность транспортного уровня используется в отличие от безопасности на основе сообщений.
При использовании браузера для загрузки ссылки на службу я могу загрузить страницу svcutil.exe ... WDSL.
При использовании моей тестовой страницы asp для вызова веб-метода из этой ссылки я получаю следующее:
Завершил вызов веб-службы. Состояние = Внутренняя ошибка сервера ResponseText = a: InvalidSecurity Произошла ошибка при проверке безопасности сообщения.
Это говорит о сбое аутентификации. При тестировании с использованием asp.net или приложения WCF storm для связи с обычным API все работает хорошо.
API был недавно перенесен, может показаться, что что-то настроено неправильно, но я затрудняюсь объяснить, что именно.
Я могу перейти к ссылке на службу svcutil.exe ... WDSL, выбирая ее в браузере, я получаю ожидаемый ответ XML.
ИМЯ ПОЛЬЗОВАТЕЛЯ и используемый пароль работают при использовании неклассической публикации asp API с использованием безопасности на основе сообщений.
Можно ли опубликовать совет по поиску и устранению неисправностей, который может помочь в диагностике проблемы, особенно в отношении обнаружения и настройки безопасности транспортного уровня?
Спасибо, Скотт
REF _http: //theether.net/kb/100127
загрузите компакт-диск с приглашением cmd в C: \ Windows \ System32 \ inetsrv введите: appcmd list config -section: system.webServer / asp отобразится следующий путь: c: \ inetpub \ conf \ temp \ ASP-скомпилированные шаблоны путь проверки существует (есть ) Проверьте, есть ли у СЕТЕВОЙ СЛУЖБЫ разрешения на доступ к "шаблонам, скомпилированным ASP". Если не из appcmd, выполните
icacls "c: \ inetpub \ conf \ temp \ ASP Compiled Templates" / grant "NETWORK SERVICE: (OI) (CI) (M)"
должен прочитать "успешно обработано 1 файл"
перезапущен пул приложений.
«Ошибка InvalidSecurityAn при проверке безопасности для сообщения» проблема все еще сохраняется, но ошибка «НЕ МОЖЕТ СОЗДАТЬ ПОДКАТАЛОГ КЭША ДИСКА ....» из журнала событий больше не возникает.
Извините, еще одно обновление. Изменение разрешения сетевой службы НЕ ЯВНО решило проблему, переход на ПУЛ ПРИЛОЖЕНИЙ ПО УМОЛЧАНИЮ решил проблему.
Наконец-то есть зацепка. Исследовано:
ServiceSecurityAudit устанавливается в поведении службы. _http: //intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/# Журналы IIS (просто показывает неспецифическую ошибку 500). Включена трассировка ошибок (также отображается ошибка 500). Пользовательские ошибки отключены. Дружественные сообщения IE отключены. Отладка на стороне клиента и сервера Asp при запущенном ProcessMon, ошибок нет. Web.config httpErrors errorMode = "Подробный" /> + ServiceSecurityAudit обнаружил, что "Ссылка на объект не установлена на экземпляр объекта", так что похоже, что в нашем приложении есть ошибка.
Последующие действия (10.06.11):
Аудит безопасности службы задокументирован здесь:
http://intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/
Был ключом к решению этой проблемы. Обнаружена ошибка ссылки на объект, которая указала на несогласованность библиотек DLL Business Objects и Data Access. При использовании CLASSIC ASP для связи с API WCF.NET с помощью АУТЕНТИФИКАЦИИ ТРАНСПОРТА не было никаких указаний на эту ошибку до тех пор, пока аудит безопасности службы не был включен в файл behavior.config в развертывании WCF.