Лучший отвечающий
Исключение MessageSecurityException при обращении к методам WCF-службы

Вопрос
-
Добрый день.
Есть WCF-служба, размещенная на IIS 6 (Windows 2003 SP2). Служба использует привязку wsHttpBinding, Identity - Dns, режим безопасности - Message, MessageClientCredentialType - UserName.
При обращении к методам WCF-слубы с тогоже сервера, где она хостится все работает нормально. Но при обращении с клиенской машины выбрасывается исключение System.ServiceModel.Security.MessageSecurityException "An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail." (An error occurred when verifying security for the message.).
В хранилище сертификатов (доверенные корнивые центры сертификации) клиентской машины присутствовал сертификат издателя сертификата, используемого WCF-службой. Пробовал также установить в хранилище сертификатов сертификат, используемый WCF-службой - не помогло.
Вот трассировка стека:
at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)
at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation operation, EndpointAddress target, Uri via, SecurityToken currentToken, TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout)
at System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Channels.DatagramAdapter.RequestDatagramAdapterChannel.Request(Message request, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Seac.Client.SeacWcf.ISeacConnection.GetVersion()
at Seac.Client.Forms.MainWindow.OnLoad(EventArgs e) in C:\build\_TEMP\C#\Seac\Seac.Client\Forms\MainWindow.cs:line 52Заранее спасибо за помощь.
с форума TechNet
15 марта 2012 г. 20:10
Ответы
-
Проверьте разницу во времени между часами на сервере и на клиенте. Если будет больше 5 минут - будет падать именно с такой ошибкой.
- Предложено в качестве ответа Abolmasov DmitryModerator 19 марта 2012 г. 5:35
- Помечено в качестве ответа SARAFF 19 марта 2012 г. 6:20
16 марта 2012 г. 13:15
Все ответы
-
>> See the inner FaultException for the fault code and detail
а что в inner FaultException?
16 марта 2012 г. 11:37 -
да в innerException FaultException "An error occurred when verifying security for the message."
с форума TechNet
16 марта 2012 г. 11:51 -
Проверьте разницу во времени между часами на сервере и на клиенте. Если будет больше 5 минут - будет падать именно с такой ошибкой.
- Предложено в качестве ответа Abolmasov DmitryModerator 19 марта 2012 г. 5:35
- Помечено в качестве ответа SARAFF 19 марта 2012 г. 6:20
16 марта 2012 г. 13:15 -
Уважаемый пользователь,
Пожалуйста, не забывайте отмечать сообщения, которые решают вашу проблему. Для этого под каждым сообщением есть кнопка "Пометить как ответ".
Спасибо.
Для связи [mail]
19 марта 2012 г. 5:34Модератор -
Да, причина была именно в часах. Только они не спешили/отстовали, а находились в разных часовых поясах (UTC+2 и UTC+3), соответственно время по Гринвичу отличалось на 1 час.
Спасибо за помощь.
с форума TechNet
19 марта 2012 г. 6:20