У меня есть веб-сервис, размещенный в кластерной среде.Веб-приложение, которое вызывает эту службу, также размещено в кластерной среде, но на другом наборе серверов IIS6.Следовательно, серверами приложений являются appserv1 и appserv2, а серверами служб являются svcserv1 и svcserv2.Мы не контролируем, к каким серверам осуществляется доступ, поскольку мы обычно называем их либо appserv, либо svcserv соответственно.
Служба является службой WCF, но была создана для совместимости с инфраструктурой веб-службы .Net 2.0.Приложение работает нормально, когда оно запускается, но, вероятно,> 35% времени, когда служба отвечает Исключение: запрос не выполнен с состоянием HTTP 401: неавторизовано. ошибка.
I 'я видел других, которые рекомендуют устанавливать учетные данные напрямую, и мое приложение делает это следующим образом.
Dim cc As New CredentialCache()
Dim service As WCFServiceRef.Reports
service = New WCFServiceRef.Reports
service.Url = serviceURL
cc.Add(New Uri(service.Url), "Negotiate", New NetworkCredential("username", "password"))
service.Credentials = cc
reportData = service.GenerateReport(reportid, True, parameters, "PDF", Environment)
Я также пытался получить прямой доступ к отдельным серверам, изменив ссылочные URL-адреса, чтобы обойти диспетчер загрузки и перейти непосредственнок имени домена для сервера, но это не имеет никакого значения.
Я также видел эту статью MSDN KB, но так как у меня нет прямого доступа к конфигурации сервера (и трудно что-то изменить) Я хотел быть уверен, что со стороны приложения я ничего не могу сделать.Обратите внимание, что сервер настроен для аутентификации Windows и не разрешает анонимный доступ.
Спасибо!