ich mein WCF-Projekt hat jetzt eine DLL bekommen und in dieser DLL (c++) befindet sich ein long* Pointer. Das Einbinden ohne diesen funktioniert einwandfrei mit ihm erhalte ich eine CallbackException...Deswegen mein Gedanke, dass beim Ausführen der DLL-Funktion die Rückgabe nicht mehr zurück kommt, da mein Service nur in eine Richtung läuft...also würde ich ein Callback einbauen...das habe ich auch gemacht und bekomme jetzt folgende Fehlermeldung beim Aufruf meines Services...
using (ServiceHost sh = new ServiceHost(typeof(Cservice)))
Fehler |
InvalidOperationException: Mit "IsOneWay=true" gekennzeichnete Vorgänge müssen keine Ausgabeparameter, als Verweis zu übergebende Parameter oder Rückgabewerte deklarieren. |
Mein asynchroner Vertrag lautet:
using System;
using System.ServiceModel;
namespace Vertrag
{
[ServiceContract(Name = "VertragAsy", SessionMode= SessionMode.Allowed, CallbackContract=typeof(IcallbackContract))]
public interface IvertragAsynchron
{
[OperationContract(AsyncPattern= true, IsOneWay=true)]
IAsyncResult BeginDoIt(AsyncCallback callback, object asyncState);
CdatenVertrag EndDoIt(IAsyncResult result);
[OperationContract(AsyncPattern = false)]
bool Ping();
}
}
mein Callbackvertrag lautet:
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
namespace Vertrag
{
[ServiceContract]
public interface IcallbackContract
{
[OperationContract(IsOneWay=true)]
CdatenVertrag DoIt();
[OperationContract()]
bool Ping();
}
}
Wie ich den Callback jetzt aber noch dem Client richtig mitteile steig ich nicht durch...das Buch, welches mir helfen soll, ist da recht dürftig mit Informationen