Hallo,
Ich habe ein kleinen WCF erstellt der mit event arbeitet.
Ich habe auch noch ein paar Fragen:
1. Ist die Web.Config nötig?
2. später soll der Client local laufen und auf dem Server zugreifen in dem es Befehle wie Start, Stop, Status schickt.. sind WCF gut dafür geeignet oder gibt es eine einfacher Methode?
Bei running der Client Seite bekomme Ich folgende Fehler:
Es wurde kein standardmäßiges Endpunktelement gefunden, das auf den Vertrag "IMyContract" im ServiceModel-Clientkonfigurationsabschnitt verweist
EventService Client
Von Host Seite bekomme ich diese Fehler:
Der Dienst "WcfEventService.MyPublisher" verfügt über keine Anwendungsendpunkte (keine Infrastrukturendpunkte). Dies kann folgende Ursachen haben: Es wurde keine Konfigurationsdatei für die Anwendung gefunden, in der Konfigurationsdatei wurde kein mit dem Dienstnamen übereinstimmendes Dienstelement gefunden oder im Dienstelement wurden keine Endpunkte definiert.
WcfEventServiceHost
Web.Config
und eventServiceClient:
Danke
Ich habe ein kleinen WCF erstellt der mit event arbeitet.
Ich habe auch noch ein paar Fragen:
1. Ist die Web.Config nötig?
2. später soll der Client local laufen und auf dem Server zugreifen in dem es Befehle wie Start, Stop, Status schickt.. sind WCF gut dafür geeignet oder gibt es eine einfacher Methode?
Bei running der Client Seite bekomme Ich folgende Fehler:
Es wurde kein standardmäßiges Endpunktelement gefunden, das auf den Vertrag "IMyContract" im ServiceModel-Clientkonfigurationsabschnitt verweist
EventService Client
Code:
namespace WcfEventServiceClient { class EventServiceClient:DuplexClientBase<IMyContract>,IMyContract { public EventServiceClient(InstanceContext eventCntx) : base(eventCntx) { } public void DoSomethingAndFireEvent() { base.Channel.DoSomethingAndFireEvent(); } public void SubscribeEvent() { base.Channel.SubscribeEvent(); } static void Main(string[] args) { IMyEvents evnt = new MySubscriber(); InstanceContext eventCntx = new InstanceContext(evnt); EventServiceClient proxy = new EventServiceClient(eventCntx); Console.WriteLine("Client subscribe the event from the service at {0} ", DateTime.Now.ToString()); proxy.SubscribeEvent(); Console.WriteLine("Client call operation wich will fire the event"); proxy.DoSomethingAndFireEvent(); Console.ReadLine(); } } class MySubscriber : IMyEvents { public void Event1() { Console.WriteLine("Event is subscribed from the service at {0}",DateTime.Now.ToString()); } } }
Der Dienst "WcfEventService.MyPublisher" verfügt über keine Anwendungsendpunkte (keine Infrastrukturendpunkte). Dies kann folgende Ursachen haben: Es wurde keine Konfigurationsdatei für die Anwendung gefunden, in der Konfigurationsdatei wurde kein mit dem Dienstnamen übereinstimmendes Dienstelement gefunden oder im Dienstelement wurden keine Endpunkte definiert.
WcfEventServiceHost
Code:
namespace WcfEventServiceHost { class Program { static void Main(string[] args) { Uri httpUrl = new Uri("http://localhost:8731/MyPublisher/"); ServiceHost host = new ServiceHost(typeof(WcfEventService.MyPublisher), httpUrl); host.Open(); Console.WriteLine("Service is Hosted at {0}", DateTime.Now.ToString()); Console.WriteLine("Host is running.... Press key to stop the service. "); Console.ReadLine(); host.Close(); } } }
Code:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.serviceModel> <services > <service behaviorConfiguration="ServiceBehavior" name="WcfEventService.MyPublisher"> <endpoint address="http://localhost:8731/MyPublisher" binding="wsDualHttpBinding" contract="WcfEventService.IMyContract"> <identity> <dns value="localhost"/> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="ServiceBehavior"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="true "/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
Code:
public interface IMyEvents { [OperationContract(IsOneWay = true)] void Event1(); } [ServiceContract(CallbackContract = typeof(IMyEvents))] public interface IMyContract { [OperationContract] void DoSomethingAndFireEvent(); [OperationContract] void SubscribeEvent(); } namespace WcfEventServiceClient { class EventServiceClient:DuplexClientBase<IMyContract>,IMyContract { public EventServiceClient(InstanceContext eventCntx) : base(eventCntx) { } public void DoSomethingAndFireEvent() { base.Channel.DoSomethingAndFireEvent(); } public void SubscribeEvent() { base.Channel.SubscribeEvent(); } static void Main(string[] args) { IMyEvents evnt = new MySubscriber(); InstanceContext eventCntx = new InstanceContext(evnt); EventServiceClient proxy = new EventServiceClient(eventCntx); Console.WriteLine("Client subscribe the event from the service at {0} ", DateTime.Now.ToString()); proxy.SubscribeEvent(); Console.WriteLine("Client call operation wich will fire the event"); proxy.DoSomethingAndFireEvent(); Console.ReadLine(); } } class MySubscriber : IMyEvents { public void Event1() { Console.WriteLine("Event is subscribed from the service at {0}",DateTime.Now.ToString()); } } }
Comment