Hallo, bin echter Neuling mit C# und mache gerade erste Versuche um ein spezielles Problem anzupacken. Mit Visual C# 2008 habe ich eine ConsoleApplication geschrieben und eine bestimmte Service Reference eingebunden, das klappt. Alles ist aus einem Beispiel PDF wie dieser Service angesprochen werden kann, trotzdem komm ich nicht so richtig zum Ziel. Es wird in der Main Funktion diese Klasse instanziiert: PollingCLSAPIEventsContract3Client() Das klappt auch. Es werden danach wie im PDF die einzelnen Properties definiert. Dann registriere ich mich als Event Listener so: EventsResult result = proxy.Subscribe(out userToken, filter); Es kompiliert ohne Fehler. Wenn ich es dann ausführe so bekomme ich folgenden Fehler, im Debug bleibt es beim new Befehl der o. a. Klasse stehen mit diesem Fehler: Could not find endpoint element with name 'BasicHttpBinding_ICLSAPIEventsContract3' and contract 'CLSAPIEvents3Service.IPollingCLSAPIEventsContract3' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this name could be found in the client element. Ich verstehe es so, dass ich einen Event Handler brauche und diesen noch nicht angelegt habe. Kann das sein? Oder was heißt dieser Fehler sonst? Oder muss ich da im Config File noch etwas herumeditieren? Und was?? Bin für eine kurze Hilfe dankbar. Thomas
Er will dann wohl scheinbar die Proxy-Klasse ("PollingCLSAPIEventsContract3Client") für den Webservice instantiieren, findet aber in der app.config (*) keine Information darüber unter welcher URL (Endpoint) er den Webservice denn finden könnte. ("PollingCLSAPIEventsContract3Client" hat vermutlich noch andere Konstruktoren, wo Binding+Endpoint auch "manuell" via Code übergeben werden könnte.) (*) oder web.config falls es eine asp.net Seite ist. Der Kram in der app.config sieht üblicherweise so ähnlich aus (und wird auch eigentlich automatisch beim Einbinden einer Service-Referenz passend generiert):
1 | <system.serviceModel> |
2 | <bindings> |
3 | <basicHttpBinding> |
4 | <binding name="beispiel" /> |
5 | </basicHttpBinding> |
6 | </bindings> |
7 | <client> |
8 | <endpoint address="http://meinetolleapi.example.org/api.asmx" binding="basicHttpBinding" |
9 | bindingConfiguration="beispiel" contract="einnamespace.beispiel" name="beispiel" /> |
10 | </client> |
11 | </system.serviceModel> |
Hallo, ist mir alles sehr nebulös. Ich werde da mal weiter forschen.. Gruß Thomas
So, etwas weiter nun. Der Fehler ist immer noch der: Could not find endpoint element with name 'BasicHttpBinding_ICLSAPIEventsContract3' and contract 'CLSAPIEvents3Service.IPollingCLSAPIEventsContract3' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this name could be found in the client element. Hab nun in meiner app.config mal unter client den zweiten endpoint ergänzt: <client> <endpoint address="http://fujitsu:8002/CLSAPIEvents3" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IPollingCLSAPIEventsCont contract="CLSAPIEvents3Service.IPollingCLSAPIEventsContract3" name="BasicHttpBinding_IPollingCLSAPIEventsContract3" /> //diesen hab ich nun manuell hinzugefügt: <endpoint address="http://fujitsu:8000/ICLSAPIEventsContract3" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IPollingCLSAPIEventsContract3" contract="CLSAPIEvents3Service.IPollingCLSAPIEventsContract3" name="ICLSAPIEventsContract3" /> </client> Er findet es nicht im client element, ist das in der app.config oder im C# Codeteil? Manuell hinzufügen ist ja Mist, hab ich da nen Fehler gemacht? Gruß Thomas
Manuell ginge vermutlich so:
1 | BasicHttpBinding binding = new BasicHttpBinding(); |
2 | binding.MaxReceivedMessageSize = Int32.MaxValue; // falls große Datenmengen drüber geschaufelt werden |
3 | |
4 | EndpointAddress ep = new EndpointAddress("http://fujitsu:8000/ICLSAPIEventsContract3"); |
5 | PollingCLSAPIEventsContract3Client client = new PollingCLSAPIEventsContract3Client(binding, ep); |
...wie man herausfindet, welche Einträge er wohl konkret in der config erwartet weiß ich leider nicht - Bei mir wurden die bislang immer direkt korrekt erzeugt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.