程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WCF客戶端無法訪問服務原因之一:時間不同步問題

WCF客戶端無法訪問服務原因之一:時間不同步問題

編輯:關於.NET

在使用WCF服務時,如果客戶端調用服務時出現如下錯誤:

System.ServiceModel.Security.MessageSecurityException: 從另一方收到未進行安全處理或安全處理不正確的錯誤。有關錯誤代碼和詳細信息,請

參閱內部 FaultException。 ---> System.ServiceModel.FaultException: 消息中至少有一個安全令牌無法驗證。

--- 內部異常堆棧跟蹤的結尾 ---

Server stack trace:

在 System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)

在 System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)

在 System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation operation, EndpointAddress target, Uri via, SecurityToken currentToken, TimeSpan timeout)

在 System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout)

在 System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan timeout)

在 System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.OnOpen(TimeSpan timeout)

在 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

在 System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)

在 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

在 System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)

在 System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)

在 System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)

在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)

在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)

在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)

在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:

在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

在 CommonData.MembershipRole.IMembershipRole.ValidateUser(String username, String password)

在 CommonData.MembershipRole.MembershipRoleClient.ValidateUser(String username, String password)

在 WMSClient.LoginForm.bdlogin_DoWork(Object sender, DoWorkEventArgs e) in line:CommonData.LoggingService.Error(:0):off.CommonData.LoggingService

這種情況90%是因為客戶端和服務端時間不一致造成的,客戶端和服務端所允許的時間差可以是5分鐘.

解決方案是客戶端要和服務端進行時間同步.

可以使用命令:net time \\IP地址或服務器名 /set /yes ,但這樣操作對服務器的安全有影響,目前我還沒有想到好的解決方法.不知大家有什麼好的方法.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved