WCF bekannter Typ aus System.Object in Config

8

Ich versuche, einen bekannten Typ in meiner Konfiguration anzugeben, aber ich habe Probleme damit, dass er von Object abgeleitet wird. Ich kann es machen, indem ich den bekannten Typ über das Attribut spezifiziere. Aber in diesem Fall muss ich es von der Konfig funktionieren lassen.

Hier ist ein Beispiel. Folgendes funktioniert gut:

%Vor%

Aber wenn ich das ServiceKnownType Attribut entferne und das folgende in die Config setze:

%Vor%

Ich erhalte eine ConfigurationErrorsException mit der Meldung "Der Wert für die Eigenschaft 'type' ist nicht gültig. Der Fehler ist: Der Typ System.Object kann nicht als deklarierter Typ in der Konfiguration verwendet werden."

Gibt es trotzdem, um dies über die Config zu machen?

    
Scott J 30.06.2010, 16:19
quelle

2 Antworten

9

Die Antwort stellt sich heraus, dass es nicht möglich ist, in der Konfigurationsdatei allein das zu tun, was ich tun möchte. Die obige Konfiguration entspricht dem Attribut [KnownType], das für DataContracts verwendet wird. Es scheint keine Möglichkeit zu [ServiceKnownType] in der Konfiguration zu implementieren.

Ein alternativer Ansatz besteht darin, das Attribut [ServiceKnownType (Methodenname, Typ)] mit einem benutzerdefinierten Konfigurationsabschnitt zu verwenden. Die neue Konfiguration sieht so aus:

%Vor%

Die Verträge:

%Vor%

Die Hilfsklasse, die den Callback enthält, der die Liste bekannter Typen zurückgibt

%Vor%

Informationen zum Erstellen von benutzerdefinierten Konfigurationsabschnitten finden Sie hier:

Ссылка

Ссылка

    
Scott J 30.06.2010, 21:06
quelle
2

Ich bin mir nicht sicher, ob dies beabsichtigt ist, aber der folgende KnownTypeHelper wird keinen Fehler ausgeben, wenn Sie keinen Servicevertrag mit bekannten Typen deklariert haben. (d. h. es ist optional, bekannte Typen zu Serviceverträgen hinzuzufügen).

%Vor%

Um jemand anderen die Mühe zu ersparen, die Konfigurationsklassen zu erstellen,

Hinweis: Es gibt keine Validierung der qualifizierten Typnamen der Assembly. Wenn jemand die entsprechenden Attribute hinzufügen möchte, tun Sie dies bitte.

%Vor%     
user543103 15.12.2010 09:12
quelle