| |
![zurück](../images/b_zurueck.gif)
VB.NET - FortgeschritteneWCF Dienst lässt sich nicht aus einem Windows Dienst heraus konsumieren | | ![](../images/trans.gif) | Autor: lyris | Datum: 02.08.12 14:24 |
| Hallo liebe Community: Ich habe ein kleines Problem:
Auf einem Rechner (Server) läuft ein WCF Dienst. Dieser bietet einen Subscription Manager, bei dem ich den Nachrichtenbezug (von Events die auf dem Server auftreten) abonnieren kann. Nach der Anmeldung teile ich dem Server den Endpoint (Client auf dem die Windows Applikation läuft) mit und bekomme dann Nachrichten vom Server geschickt, bis ich mich unsubscribe. Alles funktioniert tadellos.
Nun habe ich auf dem Client ein Problem: Die Windows Anwendung liegt im Startup. Wird bspw. der Rechner neu gebootet, dann bleibt er im Windows Logon stehen und meine Anwendung läuft erst dann los, wenn sich jemand anmeldet und ich habe Lücken in den empfangenen Nachrichten.
Ich habe also (erstmalig) einen Windows Dienst geschrieben bei dem ich im Grunde die Logik für das Subscribe und Unsubscribe beim Server und eben all das, was ich vorher in meiner Windows Form hatte, in eine eigene Klasse ausgelagert habe, die ich beim Start des Services instanziiere.
Die Daten der Config habe ich übernommen, d.h. der Dienst ist komplett identisch konfiguriert (Binding/Security). Die Namespaces in den Contracts habe ich angepasst und sehe beim Debuggen auf der Client-Seite keinerlei Probleme - er liest die Konfig Datei korrekt aus, Namespaces passen und der Subscribe Request wird ohne Fehler ausgeführt.
Nur: Der Server schickt nun Events und auf dem Client passiert rein gar nichts. Im EventLog des Servers taucht folgender Hinweis auf, solange ich mich nicht wieder aus dem Windows Dienst Unsubscribe:
Computer: SERVER
Description:
ServerInfo.WS.Eventing.Host:15412, Thread:14908: EndpointCache:GetChannel(): Got exception!
System.ServiceModel.ActionNotSupportedException: The message with Action 'http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).
Server stack trace:
at System.ServiceModel.Channels.ClientReliableSession.ProcessCreateSequenceResponse(Message response, DateTime start)
at System.ServiceModel.Channels.ClientReliableSession.Open(TimeSpan timeout)
at System.ServiceModel.Channels.ReliableRequestSessionChannel.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
Ich habe aufgrund einer intensiven Suche bei Google folgendes schon probiert:
- Den Dienstverweis im Visual Studio hinzugefügt und ihn regenerieren lassen
- Die Accounts unter denen der Dienst selbst läuft verändert: Von SYSTEM auf NETWORK SERVICE auf meine Windows Kennung (unter der die WindowsAnwendung läuft). Beim Network Service bekam ich beim Subscribe auf dem Client den Fehler daß er seinen ChannelDispatcher nicht öffnen kann, bis ich dem Network Service per HTTPConfig explizit die Rechte dazu gegeben habe.
- Sämtliche Varianten was Security betrifft in der Config durchprobiert
- Den AdressFilter in meinem Event-Receiver auf AddressFilterMode:=AddressFilterMode.Any geändert..
Und nun bin ich leider etwas ratlos und frage daher in die Runde ob jemand eine Idee hat.
Ich tippe irgendwie darauf, daß der Dienst selbst das Problem ist und nur beschränkte Rechte hat.
Ich freue mich über jeden Tipp ! | ![](../images/trans.gif) |
![](../images/48x48/info.gif) | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
![nach oben](../images/b_top.gif) ![zurück](../images/b_zurueck.gif) |
|
sevZIP40 Pro DLL ![sevZIP 4.0 Pro für VB/VBA und VB.NET](../images/werbung/sevzip30_100x100.jpg)
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats TOP Entwickler-Paket ![Developer CD f?r VB](../images/werbung/devcdvb_100x100.jpg)
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|