Ошибка согласования SSPI после обновления сайта ASP.NET до .NET 4 - PullRequest
1 голос
/ 22 декабря 2010

Эта ошибка появляется при развертывании сайта на сервере, но корректно работает на моем компьютере разработчика.

Позвольте мне кратко рассказать о том, как все настроено.

Приложение ( WebApp ) развертывается в Windows Server 2008 с пакетом обновления 2 (SP2) под управлением IIS 7.0. На сайте есть два приложения: WebApp и WebService . Сервер не является частью домена, но находится в локальной сети.

WebService содержит веб-службу WCF (svc) и не может быть изменен. Я могу подключиться к этому и использовать его как положено.

Я обновил WebApp до ASP.NET 4 с ASP.NET 3.5 sp1, в которой есть клиентский прокси для веб-службы WCF (создается путем добавления ссылки на службу). До обновления все работало правильно. После обновления я могу запустить его и правильно использовать его из своего окна разработчика (в домене), и он может использовать WebService , как и ожидалось. Когда я развертываю сайт на сервере и получаю к нему доступ, я получаю следующую ошибку ( обновляется с помощью трассировки стека, включает только первую строку после каждого сообщения ):

[Win32Exception (0x80004005): The Security Support Provider Interface (SSPI) negotiation failed.]
System.ServiceModel.Security.WindowsSspiNegotiation.GetOutgoingBlob(Byte[] incomingBlob, ChannelBinding channelbinding, ExtendedProtectionPolicy protectionPolicy) +3705927

[SecurityNegotiationException: SOAP security negotiation with 'http://server.mydoamin.com/WebService/TestService.svc' for target 'http://server.mydoamin.com/WebService/TestService.svc' failed. See inner exception for more details.]
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +9464367

[HttpException (0x80004005): SOAP security negotiation with 'http://server.mydoamin.com/WebService/TestService.svc' for target 'http://server.mydoamin.com/WebService/TestService.svc' failed. See inner exception for more details.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9028953

[HttpException (0x80004005): SOAP security negotiation with 'http://server.mydoamin.com/WebService/TestService.svc' for target 'http://server.mydoamin.com/WebService/TestService.svc' failed. See inner exception for more details.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8950644

Единственное изменение, которое я сделал в IIS, было установить пул приложений на .NET 4.

Я протестировал и могу подключиться и использовать WebService с компьютера, не входящего в домен, без каких-либо проблем. И он отлично работает из моей коробки разработчика (на домене).

Я использую wsHttpBinding и аутентифицируюсь с помощью имени пользователя / пароля локальной (для сервера) учетной записи пользователя Windows. Я установил имя пользователя / пароль в свойстве ClientCredentials.Windows.ClientCredential клиентского прокси.

Вот мой конфиг безопасности под привязкой клиента (все это автоматически, я не изменил его, добавив ссылку на сервис):

<security mode="Message">
  <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
  <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true"/>
</security>

Опять же, все работает правильно, если сайт asp.net запускается не с сервера, а из другого места.

Буду признателен за любые предложения. Спасибо!

1 Ответ

1 голос
/ 09 февраля 2011

Попробуйте переустановить дистрибутив .net4.Иногда при включении какой-либо функции .net3.5 возникают странные проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...