2012-05-09 7 views
1

サーバー対将来の日時に設定されているときに私たちは以下のようにバインディングたちのカスタムに私たちのセキュリティを設定してありますクライアントを今から7日後に戻すように設定することによって、クライアントは機能します。しかし、クライアントに何かを将来9時間以上設定した瞬間、例外が発生します。私たちが見つけた唯一の事は別のスレッドの終わりにいくつかのあいまいな参照しは最大タイムスタンプの有効期間は、クライアントが

http://social.msdn.microsoft.com/Forums/en/wcf/thread/7c3a7a7e-b9a5-4198-9a29-c6d4e408d36d

誰もが任意のアイデアを持っていますか?

更新: ここでは例外が追加されます。サーバーがクライアントメッセージを拒否したように見えます。

System.ServiceModel.Security.MessageSecurityException occurred 
    Message=An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail. 
    Source=mscorlib 
    StackTrace: 
    Server stack trace: 
     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.RenewTokenCore(TimeSpan timeout, SecurityToken tokenToBeRenewed) 
     at System.IdentityModel.Selectors.SecurityTokenProvider.RenewToken(TimeSpan timeout, SecurityToken tokenToBeRenewed) 
     at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.RenewKey(TimeSpan timeout) 
     at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.SecureOutgoingMessage(Message& message, TimeSpan timeout) 
     at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecurityDuplexSessionChannel.Send(Message message, TimeSpan timeout) 
     at System.ServiceModel.Channels.ClientReliableChannelBinder`1.DuplexClientReliableChannelBinder`1.OnSend(TDuplexChannel channel, Message message, TimeSpan timeout) 
     at System.ServiceModel.Channels.ReliableChannelBinder`1.Send(Message message, TimeSpan timeout, MaskingMode maskingMode) 
     at System.ServiceModel.Channels.SendReceiveReliableRequestor.OnRequest(Message request, TimeSpan timeout, Boolean last) 
     at System.ServiceModel.Channels.ReliableRequestor.Request(TimeSpan timeout) 
     at System.ServiceModel.Channels.ClientReliableSession.Open(TimeSpan timeout) 
     at System.ServiceModel.Channels.ClientReliableDuplexSessionChannel.OnOpen(TimeSpan timeout) 
     at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 
     at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout) 
     at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 
     at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout) 
     at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade) 
     at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(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 CompuLoan.Maintenance.IMaintenanceService.IsLicensed(String pHardwareId, Boolean pUseLicense) 
     at CompuLoan.Maintenance.MaintenanceServiceClient.IsLicensed(String pHardwareId, Boolean pUseLicense) in C:\Development\compuloan\Source\CompuLoan\Service References\Maintenance\Reference.cs:line 5156 
     at CompuLoan.App.IsLicensed(Boolean pUseLicense) in C:\Development\compuloan\Source\CompuLoan\App.xaml.cs:line 365 
    InnerException: System.ServiceModel.FaultException 
     Message=The security context token is expired or is not valid. The message was not processed. 
     InnerException: 
+1

申し訳ありませんが、私は本当に貢献することはありませんが、あなたの質問とリンクは私にこれを思い出させてくれました:http://xkcd.com/979/ –

+0

2番目の考えでは、多分あなたのタイムゾーンの関係UTC、またはおそらく国際日付ライン? –

+0

おそらく、クライアントがサーバレスポンスを取得したときに例外をスローし、それ以外の方法でクライアントをスローしてしまうことはありますか? wcfロスを使用して確認してください。完全な例外とそのスタックトレースも公開してください。 –

答えて

1

これは、タイムスタンプとは異なるセッションキーの有効期限です。たとえば、establishSecurityContextをオフにした場合(またはCreateSecureConversationSecurityを使用しない場合)は、この例外は発生しません。

それ以外の場合は、InactivityTimeout、IssuedCookieLifetime、NegotiationTimeout、SessionKeyRenewalInterval、およびSessionKeyRolloverIntervalなどの追加値を増やしてみてください。

サーバ上でWCFトレースをオンにして、正確なスタックトレースを見れば、正確なプロパティにドリルダウンできます。

関連する問題