vorbei collection oder array-Typ Eingang parameter wcf-Dienst
Ich geschrieben habe einen WCf-Service die ist ein Collection-Typ Eingang parameter body und einen anderen parameter als query-string wie folgt:
[WebInvoke(Method = "PUT", UriTemplate = "users/role/{userID}",BodyStyle=WebMessageBodyStyle.WrappedRequest)]
[OperationContract]
public bool AssignUserRole(int userID,Collection<int> roleIDs)
{
//do something
return restult;
}
Nun, wenn ich versuche, diesen parameter übergeben, ich bin immer de serialisieren Fehler. Ich habe versucht Folgendes format:
<AssignUserRole xmlns="http://tempuri.org/">
<roleIDs>
<roleID>7</roleID>
</roleIDs>
</AssignUserRole>
<AssignUserRole xmlns="http://tempuri.org/">
<ArrayOfroleID>
<roleID>7</roleID>
</ArrayOfroleID>
</AssignUserRole>
<AssignUserRole xmlns="http://tempuri.org/">
<ArrayOfint>
<int>7</int>
</ArrayOfint>
</AssignUserRole>
Kann jemand mir helfen, wie kann ich diese übergeben Array ("Collection type" Text-parameter)?
Dank.
InformationsquelleAutor Rajesh Kumar | 2011-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das richtige format wäre:
Einem einfachen Weg, um herauszufinden, was das erwartete format ist für einen bestimmten Betrieb ist die Verwendung eines WCF-client mit dem gleichen Vertrag senden Sie eine Nachricht mit und schauen Sie den Vorgang mit Fiddler. Das Programm unten funktioniert.
Beachten Sie auch, dass es ein problem in Ihrem UriTemplate: die path-variable {userId} nicht der Typ
int
(es muss ein string sein). Dies wird behoben, in dem Beispielcode oben.Eine weitere Sache: wenn Sie nicht möchten, verwenden Sie den Standard-Namensraum für collections /arrays verwenden, können Sie ein
[CollectionDataContract]
Klasse zu ändern. Wenn Sie anstatt Sammlung, die Sie die folgende Klasse, dann der erste Körper, der Sie ausprobiert, sollte aber funktionieren:Ich würde vorschlagen, Sie tun, was ich in den code, den ich habe (das klappt, können Sie versuchen, es) - erstellen Sie ein client mit WCF mit dem gleichen Vertrag (dies ist wichtig), den Kundendienst rufen und sehen, was der client sendet. Das sollte Ihnen eine Idee geben, was geändert werden muss.
InformationsquelleAutor carlosfigueira