Ich mache eine WPF-Anwendung und es ist auch ein WCF-Server, das Problem, das ich habe, ist, dass ich den ServiceHost öffnen muss und in einem Port für die Clients zu hören und Anfragen sobald annehmen es beginnt, aber das Problem, das ich habe, ist, dass, wenn ich den Code schreiben, um den Host host.open im Konstruktor nach der Funktion this.InitializeComponent() zu öffnen, schlägt es mit einer Ausnahme fehl. Wenn ich den Host in einem Button öffne und ich ihn nach dem Start der App drücke, funktioniert das ohne Probleme.C# WCF host.open fehlgeschlagen
Warum ist das und wie kann ich dieses Problem beheben?
Ich benutze einen tcp.net-Kanal, ich hosste es in der Anwendung und die Ausnahme, die ich erhalte, ist über den Service bereits registriert wurde.
Die Ausnahme auf den Clients ist:
inner exception message :"An existing connection was forcibly closed by the remote host"
error number: 10054
Socket error: System.Net.Sockets.SocketError.ConnectionReset
dank
Wally
der Konstruktor ist:
public Window1()
{
this.InitializeComponent();
starthost();
}
private void starthost()
{
host = new ServiceHost(typeof (Window1),
new Uri[]{ new Uri("net.tcp://localhost:8000") });
host.AddServiceEndpoint(typeof(IGanador), new NetTcpBinding(), "Contador");
host.open(); //it fails with this line here but not in a button
}
Wie lautet Ihr Code? Wenn ich raten müsste, würde ich sagen, dass es so klingt, als würde man Code schreiben, so dass es zweimal läuft. – tomasr
Ich fand heraus, dass System.ServiceModel meinen Konstruktor window1 aufruft, immer wenn es eine Client-Anfrage erhält, ist das ein Microsoft Bug? oder ist das das erwartete Verhalten? es macht einfach keinen Sinn für mich. –
Nein, Sie haben wahrscheinlich den standardmäßigen "Pro-Call" -Instanzierungsmodus aktiviert. Das ist das erwartete Verhalten - jede Anfrage vom Client wird eine Instanz des Servers auslösen. –