Können Sie WCF-Dienste mit Windows Phone 7 verwenden?

8

Ich konnte nur ein paar Leute online finden, die das erwähnten und es scheint so einfach für sie zu sein, die Service-Referenz hinzuzufügen.

Wenn ich jedoch versuche, einen Dienstverweis für meinen WCF-Dienst hinzuzufügen (der in einer normalen Konsolenanwendung ordnungsgemäß funktioniert, so habe ich den WCF als Problem ausgeschlossen), erhalte ich eine Reihe von Fehlern.

  • Warnung 5 Warnung des benutzerdefinierten Tools: Es wurden keine mit Silverlight 3 kompatiblen Endpunkte gefunden. Die generierte Clientklasse ist nicht verwendbar, wenn die Endpunktinformationen nicht über den Konstruktor bereitgestellt werden.
  • Warnung 6 Warnung des benutzerdefinierten Tools: Vom Ziel eines Aufrufs wurde eine Ausnahme ausgelöst.
  • Warnung 2 Warnung des benutzerdefinierten Tools: wsdl: portType kann nicht importiert werden Detail: Beim Ausführen einer WSDL-Importerweiterung wurde eine Ausnahme ausgelöst: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
  • Fehler: Der 'System.Runtime.Serialization.DataContractSet' konnte nicht von der Assembly 'System.Runtime.Serialization, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e' geladen werden.
  • Warnung 4 Warnung für benutzerdefiniertes Werkzeug: wsdl: port kann nicht importiert werden Detail: Beim Importieren einer wsdl: -Bindung ist ein Fehler aufgetreten, von dem der wsdl: -Port abhängig ist.
  • Warnung 3 Warnung zu benutzerdefinierten Tools: wsdl: binding kann nicht importiert werden Detail: Beim Importieren eines wsdl: portType, von dem die wsdl: -Bindung abhängig ist, ist ein Fehler aufgetreten.
  • Fehler 7 Fehler des benutzerdefinierten Tools: Fehler beim Generieren von Code für die Servicereferenz "ServiceReference". Weitere Informationen finden Sie in anderen Fehler- und Warnmeldungen.

Ich finde es merkwürdig, dass der erste Fehler Silverlight 3 erwähnt, da ich gerade alle meine Entwicklungstools vollständig deinstalliert und neu installiert habe, um sicherzustellen, dass ich die neueste Version von .NET und Silverlight verwendete.

Diese Fehler ähneln denen, die ich sehe, wenn ich versuche, ein neues Silverlight-Projekt zu erstellen und das Kontrollkästchen "WCF RIA-Dienste aktivieren" nicht zu aktivieren. Ich habe keine Möglichkeit gefunden, dies für WP7 zu ermöglichen, wenn das tatsächlich das Problem ist.

Jede Unterstützung von Ihnen, gelehrte Gentlemen (und Gentlewomen) würde sehr geschätzt werden.

    
Will 21.08.2010, 19:57
quelle

7 Antworten

0

Ja, das ist ein merkwürdiger Fehler. Sie können Strings, Integer usw. zurückgeben, aber alles andere wie ArrayList und so weiter, erhalten Sie diesen Fehler.

Es ist nichts falsch mit Ihrem Code, es gibt nur einen Fehler mit VS. Microsoft hat es behoben (Service Packs überprüfen), aber wenn Sie für Windows Phone 7 programmieren, ist der Fehler immer noch da.

Sie haben den Service, den Bin und den Obj-Ordner gelöscht. Speichern und schließen Sie VS. Starten Sie dann das Projekt neu, fügen Sie die Service-Referenz hinzu (NICHT DEBUG / RUN der App). Oh ja, mach zuerst eine Sicherung. Es sollte ok sein. Sie müssen diesen Vorgang möglicherweise jedes Mal wiederholen, wenn Sie den Dienst aktualisieren.

Dies sollte es beheben, wenn nicht, müssen Sie möglicherweise ein neues Projekt öffnen oder wenn möglich den Webservice neu erstellen.

    
John Galvin 21.02.2011, 19:01
quelle
7

Denken Sie daran, dass Silverlight - selbst für Windows Phone, das eine spezielle Version von Silverlight 3 verwendet - NICHT mit allen WCF-Dienstbindungen / Endpunkten funktioniert, sondern nur eine Teilmenge unterstützt (die beispielsweise WS-HTTP-Bindungen ausschließt). Am einfachsten ist es, Ihren WCF-Dienst für Silverlight-Anwendungen mit der Vorlage "Silverlight-aktivierter WCF-Dienst" in Visual Studio (unter Hinzufügen / Neues Element / Silverlight) zu erstellen.

Dieser Blogeintrag ( Ссылка ) aus dem Silverlight WCF Team Blog sollte etwas Licht auf die Möglichkeiten werfen. Vielleicht möchten Sie sich den gesamten Blog ( Ссылка ) ansehen, da er einige interessante How-To- und Gotcha-Artikel enthält.

    
avidgator 22.08.2010 04:01
quelle
7

Ich habe den genau gleichen Fehler gefunden und den Sammlertyp in System.Collections.Generic.List anstelle von System.Collections.ObjectModel.ObservableCollections geändert. Das war merkwürdig, da ich nicht einmal das Kästchen für "Immer Nachrichtenverträge generieren" aktiviert habe.

Ich hoffe, das hilft.

    
Jace Rhea 06.09.2010 16:29
quelle
7

Mmmm, ich habe gerade die Service-Referenz-Konfiguration geändert, indem ich die "reuse type ...." - Box deaktiviert und dann aktualisiert habe und die Service-Konfigurationsdatei generiert habe. Nicht sicher, ob dir das weiterhilft?

    
Jason Rousell 21.08.2010 22:33
quelle
1

Dieses Problem trat auf, wenn Sie Visual Studio mit Administratorberechtigung ausführen. Was Sie für eine Problemumgehung tun können, führen Sie Visual Studio ohne Administratorberechtigung aus, fügen Sie die Webdienst-Referenz hinzu, die die Proxyklassen generiert, und schließen Sie die Lösung. Öffnen Sie die Projektmappe erneut in Visual Studio mit Administratorrechten. Ein Fehlerbericht befindet sich bereits in Microsoft Connect.

Ссылка

    
Ken W 27.11.2010 03:07
quelle
0

Die Antwort lautet ja, Sie können von WP7 aus auf WCF-Dienste zugreifen, und wie bei einem früheren Poster wurde darauf hingewiesen, dass nur WS-HTTP unterstützt wird. Wenn Sie versuchen, auf einen WCF-Dienst für eine Silverlight-Anwendung zuzugreifen, müssen Sie einige Dinge tun:

  1. Aktualisieren Sie Ihr Silvleright Toolkit auf den neuesten Stand. Hol es von Codeplex
  2. Fügen Sie einen Verweis auf Microsoft.ServiceModel.DomainServices.Hosting zu Ihrem silverlight-Projekt hinzu.
  3. Gehen Sie zur Web.Config und fügen Sie den Soap-Endpunkt hinzu:

    %Vor%

    Machen Sie sich keine Sorgen wegen der Warnung "system.serviceModel"; ignoriere es

  4. Fügen Sie die Service-Referenz hinzu. "Aber welche URI?" du fragst. Die Adresse Ihres Dienstes lautet wie folgt: [namespace of your ria service]-[classname of your ria service].svc wobei . durch - ersetzt werden. Also, wenn ich meinen Service innerhalb eines Services-Verzeichnisses in meiner SL-Anwendung erstellt habe und der Namespace wie folgt aussieht:

    %Vor%

dann wäre die Adresse:

%Vor%

Lassen Sie die Werkzeuge den Rest erledigen. Wenn Sie einige funky Fehler erhalten, dann speichern Sie und schließen Sie VS und starten Sie erneut und alles funktioniert.

Ich hoffe, dass dies die Antwort ist, nach der Sie suchen.

    
Pepe Marino 11.03.2011 17:39
quelle
0

Folgendes hat mein Problem gelöst:

Ich habe ein neues WP7-Projekt erstellt, das den Dienst wcf hinzugefügt hat.

Dann habe ich den Ordner "Service-Referenzen" in das Verzeichnis meines Projekts kopiert, in dem ich dieses Problem hatte, und Visual Studio neu gestartet und die Anwendung erstellt.

Sie sollten Namespace-Fehler in Ihrem Reference.cs ; Ändern Sie einfach den Namespace in den aktuellen Projektnamespace.

    
WP7 13.10.2011 09:27
quelle