Ich arbeite an einem einfachen WCF-Dienst, MiniCalcService
, der nur eine Operation hat Add
. Der Client und der Host sind beide Konsolenanwendungen. Die Client-Anwendung nimmt die für jede Operation notwendigen Operanden auf und gibt sie an den Service weiter. Der Service gibt das Ergebnis zurück, das auf der Client-Konsole angezeigt würde.WCF EndpointNotFoundException
- -Host läuft
- ich alles in Code tue so weit und es gibt keine app.config.
- Es gibt keine großen Daten weitergegeben werden, nur zwei oder drei Zahlen
Das gestern für mich gearbeitet. Heute, wenn ich das gleiche versuchte, löst es die folgende Ausnahme aus:
Es gab kein Endpunkt, der bei http://localhost:8091/MiniCalcService abhörte, der die Nachricht annehmen konnte.
Hier ist die Stack Trace. Nicht, dass es wichtig wäre, aber MiniCalcClient
ist in Visual Studio entwickelt und MiniCalcService
und MiniCalcHost
sind in SharpDevelop entwickelt.
MiniCalcHost:
using(ServiceHost host = new ServiceHost(typeof(MiniCalcService.Service), new Uri("http://localhost:8091/MiniCalcService")))
{
host.AddServiceEndpoint(typeof(MiniCalcService.IService),new BasicHttpBinding(),"Service");
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);
host.Open();
Console.WriteLine("Serving MiniCalcService since {0}", DateTime.Now);
Console.Write("Press ENTER key to terminate the MiniCalcHost . . . ");
Console.ReadKey(true);
}
MiniCalcClient:
Servicevertrag IService:
[ServiceContract(Namespace="learning.wcf.MiniCalc")]
public interface IService
{
[OperationContract]
double Add(params int[] operands);
}
Können Sie mir bitte helfen herauszufinden, was diese Ausnahme verursacht?
Lösung: änderte ich diese Zeile:
EndpointAddress ep = new EndpointAddress("http://localhost:8091/MiniCalcService");
dazu:
EndpointAddress ep = new EndpointAddress("http://localhost:8091/MiniCalcService/Service");
und es funktionierte.
Können Sie uns zeigen, den Servicevertrag ('IService1') –
Ich habe den Servicevertrag 'IService' hinzugefügt. – Animesh
Ja, es ist mit ServiceContractAttribute dekoriert. Kein Grund, warum Int nicht verwendet werden sollte, aber ich hatte ursprünglich eine "Mul" -Methode und hatte "doppelt", da die Operation Contracts von unterschiedlicher Natur waren. Also verwende einfach doppelt für 'Add', um Konsistenz zu haben. – Animesh