Я принимаю службу WCF под IIS7 на Win2008R2. Она прекрасно работает в течение нескольких недель, а затем, когда мы делаем что-то вроде перезагрузки сервера, как правило, из-за развертывания, он начинает с возникновением ошибки следующим образом:IIS7 Аутентификация Windows вызывает 0x2746 SocketException
System.ServiceModel.Security.MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Negotiate'. The authentication header received from the server was 'Basic realm="myrealm.local",Negotiate,NTLM'. System.Net.WebException: The remote server returned an error: (401) Unauthorized.
Я пытался перезапустить все программное обеспечение, никакого эффекта , затем перезапустить сам сервер, и она превращается в ошибку, гласящая:
[SocketException (0x2746): An existing connection was forcibly closed by the remote host] [IOException: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.] [WebException: The underlying connection was closed: An unexpected error occurred on a send.] [CommunicationException: An error occurred while making the HTTP request to *. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server.]
Журналы IIS показывают только то, что он дает 401 ответа. WFetch показывает сообщение «0x2746 [sockslip]: recv() '
Я исключил клиента, самого сервисного программного обеспечения, разрешений на сервере на сервере и сети.
Если я включаю Анонимную аутентификацию, все работает; выключите его, если включена только проверка подлинности Windows, и он не работает.
Это похоже на проблему аутентификации IIS7, но я не знаю, как это проследить, поскольку трассировка WCF не отображает никакой подсказки, и на сервере не регистрируются исключения.
ПРОЯСНИТЬ В прошлом эта проблема на самом деле, казалось бы, исчезла сама по себе, однако я обнаружил, что после того, как услуга обращались с Anonymous включен, когда он затем выключается, служба продолжает работать в проверке подлинности Windows, до следующего перезапуска.
С уважением, Роб.
Я настоятельно рекомендую вам заменить все экземпляры Vertex/Windows auth на NTLM. Negotiate = Kerberos, который в большинстве случаев переполняется. Kerberos также может быть очень flaky в среде Windows, поскольку существует множество причин, по которым он может потерпеть неудачу. Кроме того, поскольку все это отвлечено, единственная информация, которую вы получаете, когда она терпит неудачу, - это ошибки 401, что может означать, что что-либо из настроек AD неправильное, чтобы синхронизировать проблемы синхронизации (именно там я буду вкладывать свои деньги). – Aron