2010-12-27 4 views
0

Wir haben einen Windows-Dienst, der einen WCF-Dienstaufruf durchführt. Normalerweise funktioniert es gut. Gelegentlich, wenn wir den Windows-Dienst neu starten, wird jedoch ein MessageSecurityException geworfen und alles wird geworfen, und es wird danach wiederholt wiederholt.Windows-Dienst, der MessageSecurityException wirft

Eine Lösung, die wir gefunden haben, ist die Einstellung AllowedImpersonationLevel auf "Identitätswechsel". Wir verwenden jedoch keinen Identitätswechsel. Außerdem ist es ein zufälliges Problem und nicht immer reproduzierbar. Daher wäre diese Lösung irrelevant.

Jedes Licht, das jemand auf diese werfen kann, würde sehr geschätzt werden.

Der Stack-Trace der Fehlermeldung:

2010-12-24 23:18:42,581 [3] ERROR [DataSync] – An error occured during Data Sync [(null)] System.ServiceModel.Security.MessageSecurityException: The HTTP request is unauthorized with client authentication scheme ‘Negotiate’. The authentication header received from the server was ‘Negotiate,NTLM’. -> System.Net.WebException: The remote server returned an error: (401) Unauthorized. at System.Net.HttpWebRequest.GetResponse() at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) —End of inner exception stack trace --

Server stack trace: at System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication(HttpWebRequest request, HttpWebResponse response, WebException responseException, HttpChannelFactory factory) at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding) at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) at System.ServiceModel.Channels.RequestChannel.Request(Message message, 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.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

+0

Wird der WCF-Dienst in IIS gehostet? Wenn ja, dann überprüfen Sie, ob der Benutzer für Fehleranforderungen in IIS-Protokollen angemeldet ist. – amit

Antwort

0

Dies ist eine Umgebung, Ausgabe. Der Computer konnte keine Verbindung zum Domänencontroller herstellen und konnte daher keine Authentifizierung durchführen, wodurch dieses zeitweilige Problem verursacht wurde.