Callbackexception

  • C#
  • .NET (FX) 4.0

    Callbackexception

    Hallo,

    ich hab eine c++ dll in mein Projekt eingebunden...das funktioniert auch soweit aber im Zusammenhang mit WCF erhalte ich nun eine CallbackException... und komme nicht darauf, wo der Fehler liegt...(das Projekt läuft mit

    C#-Quellcode

    1. ​[OperationContract(AsyncPattern= true)]
    2. IAsyncResult BeginDoIt(AsyncCallback callback, object asyncState);
    im Vertrag) Da ich schon herausgefunden habe, dass Asynchron und Callback nicht zusammen funktioniert vermute ich hier den Fehler...

    ​System.Runtime.CallbackException wurde nicht behandelt.
    HResult=-2146233087
    Message=Ein asynchroner Rückruf hat eine Ausnahme ausgelöst.
    Source=System.ServiceModel.Internals
    StackTrace:
    bei System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
    bei System.Runtime.AsyncResult.Complete(Boolean completedSynchronously, Exception exception)
    bei System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.CallComplete(Boolean completedSynchronously, Exception exception)
    bei System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishSend(IAsyncResult result, Boolean completedSynchronously)
    bei System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.SendCallback(IAsyncResult result)
    bei System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
    bei System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
    bei System.ServiceModel.Dispatcher.DuplexChannelBinder.AsyncDuplexRequest.Done(Boolean completedSynchronously)
    bei System.ServiceModel.Dispatcher.DuplexChannelBinder.AsyncDuplexRequest.GotReply(Message reply)
    bei System.ServiceModel.Dispatcher.DuplexChannelBinder.HandleRequestAsReplyCore(Message message)
    bei System.ServiceModel.Dispatcher.DuplexChannelBinder.HandleRequestAsReply(Message message)
    bei System.ServiceModel.Dispatcher.ChannelHandler.HandleRequestAsReply(RequestContext request)
    bei System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext)
    bei System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result)
    bei System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(IAsyncResult result)
    bei System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
    bei System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
    bei System.Runtime.AsyncResult.Complete(Boolean completedSynchronously, Exception exception)
    bei System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.OnReceive(IAsyncResult result)
    bei System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
    bei System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
    bei System.Runtime.AsyncResult.Complete(Boolean completedSynchronously, Exception exception)
    bei System.ServiceModel.Channels.SynchronizedMessageSource.SynchronizedAsyncResult`1.CompleteWithUnlock(Boolean synchronous, Exception exception)
    bei System.ServiceModel.Channels.SynchronizedMessageSource.ReceiveAsyncResult.OnReceiveComplete(Object state)
    bei System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(Object state)
    bei System.ServiceModel.Channels.SocketConnection.FinishRead()
    bei System.ServiceModel.Channels.SocketConnection.OnReceiveAsync(Object sender, SocketAsyncEventArgs eventArgs)
    bei System.ServiceModel.Channels.SocketConnection.OnReceiveAsyncCompleted(Object sender, SocketAsyncEventArgs e)
    bei System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e)
    bei System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags)
    bei System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
    bei System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
    InnerException: System.ServiceModel.FaultException
    HResult=-2146233087
    Message=Der Server konnte die Anforderung aufgrund eines internen Fehlers nicht verarbeiten. Wenn Sie weitere Informationen zum Fehler erhalten möchten, aktivieren Sie entweder IncludeExceptionDetailInFaults (über das ServiceBehaviorAttribute oder das <serviceDebug>-Konfigurationsverhalten) für den Client, um die Ausnahmeinformationen zurück an den Server zu senden, oder aktivieren Sie die Ablaufverfolgung gemäß der Microsoft .NET Framework SDK-Dokumentation, und überprüfen Sie die Serverablaufverfolgungsprotokolle.
    Source=mscorlib
    Action=http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher/fault
    StackTrace:
    Server stack trace:
    bei System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
    bei System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
    bei System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
    bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeEndService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
    bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
    Exception rethrown at [0]:
    bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
    bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
    bei Vertrag.IvertragAsynchron.EndDoIt(IAsyncResult result)
    bei Client.Viewmodel.MainModel.<OnStart>b__0(IAsyncResult asyncResult) in c:\Users\Musterle\Desktop\TestfürDll\AsynchronesWCF\AsynchronesWCF\Client\Viewmodel.cs:Zeile 120.
    bei System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
    InnerException:


    das ist die detaillierte Fehlermeldung...

    C#-Quellcode

    1. if (objProxy.Ping())
    2. {
    3. objProxy.BeginDoIt(asyncResult =>
    4. {
    5. this.StringContent = objProxy.EndDoIt(asyncResult).Content;
    6. }, null);
    7. }


    beim Aufruf dieses Codeabschnitts erfolgt der Abbruch und der Fehler wird gemeldet... der Code wird aufgerufen, nachdem der Client beim Server angefragt hat und nun die Rückmeldung erwartet