Konnte nicht finden, Standard-endpoint-element, das Verweise Vertrag (einfachen WCF-Service nicht funktioniert)
Die vollständige Fehlermeldung:
Konnte nicht finden, Standard-endpoint-element, das Verweise Vertrag
'SampleProject.ITextMessage " im ServiceModel-client-Konfiguration
Abschnitt. Dies könnte daran liegen, dass keine Konfigurations-Datei gefunden wurde
Ihre Anwendung, oder weil keine endpoint-element passend zu dieser
Vertrag könnte in der client-element.
Dies ist eine Konsole-app. Kann nicht viel einfacher aus.
Keine app config gewünschte in diesem Fall, nur suchen, um ein einfaches Beispiel zu gehen. Ich habe so ziemlich hob Sie den code von hier: http://msdn.microsoft.com/en-us/library/ms731758.aspx
Jede mögliche Hilfe würde geschätzt.
public class SampleProject
{
static void Main(string[] args)
{
var baseAddr = new Uri("http://localhost:6000/TextMessageSvc.svc");
using (var localHost = new ServiceHost(typeof(TextMessageClient), baseAddr))
{
try
{
//THIS page says an endpoint is not needed, a default will be created automatically:
//http://msdn.microsoft.com/en-us/library/ms731758.aspx
localHost.AddServiceEndpoint(typeof(ITextMessage),
new WSHttpBinding(),
"TextMessageSvc");
var behavior = new ServiceMetadataBehavior();
behavior.HttpGetEnabled = true;
behavior.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
localHost.Description.Behaviors.Add(behavior);
localHost.Open();
Console.WriteLine("Service initialized.");
//************** Blows up on this line ***********************
var x = new TextMessageClient();
x.SendTextMessage();
Console.WriteLine("Press the ENTER key to terminate service.");
Console.ReadLine();
localHost.Close();
}
catch (CommunicationException ex)
{
Console.WriteLine("Oops! Exception: {0}", ex.Message);
localHost.Abort();
}
}
}
}
public class TextMessageClient : ClientBase<ITextMessage>, ITextMessage
{
public void SendTextMessage()
{
base.Channel.SendTextMessage();
}
}
[ServiceBehavior]
public class TextMessageSvc : ITextMessage
{
public TextMessageSvc()
{
}
[OperationBehavior]
public void SendTextMessage()
{
}
}
[ServiceContract]
public interface ITextMessage
{
[OperationContract]
void SendTextMessage();
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also, es stellt sich heraus, dass das Problem in diesem Beispiel ist (da bin ich nicht mit einem web-config), dass TextMessageClient nicht einen Endpunkt. (localhost hat eine, aber nicht TextMessageClient), Wenn ich rufe SendTextMessage, wie wird es kommuniziert? Wer wird es sprechen??
Na ja was solls, ich erstellen Sie einen Endpunkt aus und übergeben Sie es in TextMessageClient, oder erstellen Sie einfach ein in seinem Konstruktor, die ich jetzt mache.
Also nach einer Umbenennung der TextMessageSvc zu TextMessageProxy und dann umgestalten. Das ist alles was ich jetzt noch (Wenn Sie bemerken, der neue code ist nur verbrauchen service jetzt, statt den Versuch zu host auch:
Nun habe ich eine Funktion irgendwo gibt es einen Endpunkt für TextMessageClient zu verwenden.
Die Kurzmitteilung-Klasse bietet jetzt seinen eigenen Endpunkt:
Ihre Basis-Adresse ist die Angabe einer service-Seite (TextMessageSvc.svc), so bezweifle ich, es ist gültig für eine Basis-Adresse. Also, wenn Sie fügen Sie den Endpunkt, Sie sind immer so etwas wie dieses:
Versuchen Sie dies:
Beachten Sie auch, dass Standard-Endpunkte (wie Sie zu sein scheinen mit Ihnen) sind ein feature von WCF 4.0 (.NET 4.0/VS 2010), und die nicht verfügbar in früheren Versionen.