2011-01-01 31 views
2

Ich habe Referenzen auf zwei verschiedene WCF-Dienste in einem Projekt. Ich habe die Referenz für einen der Services aktualisiert, und jetzt wird kein Code dafür generiert. Die Datei references.cs hat nur den Kommentar "Dies ist genierter Code" oben. Das Aktualisieren desselben Dienstes in anderen Projekten und das Aktualisieren des anderen Dienstes funktionieren beide einwandfrei. Es ist nur diese eine Service-Referenz in diesem einen Projekt, die das Problem verursacht, und ich bekomme keine Informationen von Visual Studio (es sagt nur, es konnte keinen Code erzeugen und ich sollte mir die anderen Fehler ansehen, die keine Informationen liefern).WCF-Dienstverweis beendet, Code für ein Projekt zu generieren

Wenn ich die "Reuse-Typen in referenzierten Assemblys" deaktivieren, wird Code generiert, aber ich möchte nicht, dass dieses eine Projekt sich von den anderen unterscheidet. Ich möchte das Problem lösen. Wenn Sie die Option "Wiederverwendungstyp" erneut prüfen, wird erneut eine leere Datei references.cs erstellt. Der Sammlertyp scheint ebenfalls keine Rolle zu spielen.

Wie kann ich dieses Problem diagnostizieren und lösen?

Update:

Es scheint, dass ich mich geirrt. Das Aktualisieren der Service-Referenz scheint die Generierung auch in anderen Projekten zu unterbrechen. Ich habe auch diese Warnungen feststellen, wie gut:

Anpassungs-Tool Warnung: Kann nicht Wsdl importieren: porttype Detail: eine Ausnahme ausgelöst wurde, während eine WSDL-Import-Erweiterung ausgeführt wird: System.ServiceModel.Description.DataContractSerializerMessageContractImporter Fehler: ISerializable Typ mit dem Datenvertragsnamen 'Exception' im Namensraum 'http://schemas.datacontract.org/2004/07/System' kann nicht importiert werden. Der Datenvertragsnamensbereich kann nicht für ISerializable-Typen angepasst werden, und der generierte Namespace 'TheDefaultNamespaceOfTheProject.ServiceReferenceName' stimmt nicht mit dem erforderlichen CLR-Namespace 'System' überein. Überprüfen Sie, ob der erforderliche Namespace einem anderen Datenvertragsnamensbereich zugeordnet wurde, und überlegen Sie, ob Sie ihn explizit mithilfe der Namespaces-Auflistung zuordnen.

Offensichtlich habe ich den Namespace dort geändert, aber es scheint, dass es versucht, System.Exception zu ThatNamespace.Exception zuzuordnen? Warum sollte es das tun und wie kann ich es korrigieren? Ich denke, das ist der Schlüssel zur ganzen Sache.

+0

Versuchen Sie, die Befehlszeilen svcutil.exe Programm. Es hat den Vorteil, dass Fehlermeldungen an die Konsole ausgegeben werden. –

+0

Es wurde erfolgreich ausgeführt und Code generiert. War das zu Diagnosezwecken oder ist es die Idee, es anstelle des Dienstvertragsdienstprogramms in Visual Studio zu verwenden? –

Antwort

0

Ich hatte einen ähnlichen Fehler in einer Silverlight-Anwendung WCF-Aufrufe. Ich habe eine WCF-Methode erstellt, die ein Exception-Objekt als Parameter übergeben hat. Es stellt sich heraus, dass die Exception-Objekte in Silverlight nicht serialisierbar sind, weil:

http://blogs.msdn.com/b/suwatch/archive/2009/01/21/wcf-silverlight-exception-and-serialization.aspx

Hier ist der relevante Auszug:

WCF’s DataContractSerializer serialize s Exception class via ISerializable (Exception in .Net Framework implements ISerializable). However, in Silverlight, there is no ISerializable interface. Therefore, Serialization information of Exception transferred over the wire will not be set into the Exception class. This does not only apply to Exception but also any types implementing ISerializable on the .Net Framework serialized to Silverlight.