Ich habe gerade angefangen mit dem REST Starterkit zu spielen, und ich habe eine Straßensperre erreicht, die versucht, meinen eigenen Dienst aufzubauen. Ich versuche, einen Dienst für die Kontoverwaltung zu schaffen, und ich kann nicht den Service erhalten, um meine Objekte zu serialisiert wird, die folgenden Fehler zu werfen:XML kann im WCF REST Service nicht deserialisiert werden
Unable to deserialize XML body with root name 'CreateAccount' and root namespace '' (for operation 'CreateAccount' and contract ('Service', ' http://tempuri.org/ ')) using DataContractSerializer. Ensure that the type corresponding to the XML is added to the known types collection of the service.
Hier ist der eigentliche Code für den Dienst (basierend aus dem ' DoWork‘Methode, die mit dem Projekt kam):
[WebHelp(Comment = "Creates a Membership account")]
[WebInvoke(UriTemplate = "CreateAccount", RequestFormat = WebMessageFormat.Xml)]
[OperationContract]
public ServiceResponse CreateAccount(CreateAccount request)
{
try
{
// do stuff
return new ServiceResponse()
{
Status = "SUCCESS",
ErrorMessage = ""
};
}
catch (Exception ex)
{
return new ServiceResponse()
{
Status = "ERROR",
ErrorMessage = ex.Message + "\n\n" + ex.StackTrace
};
}
}
Und last, but not least, hier ist das Objekt, das alle Probleme verursacht:
public class CreateAccount
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public bool SignUpForNewsletter { get; set; }
public string Password { get; set; }
}
Fehle ich etwas dumm?
Vielen Dank im Voraus!
Ich dachte gerade über einen möglichen Namenskonflikt mit Objekt und der Methode nach. Ich habe den Objektnamen in 'CreateAccountRequest' geändert und die Attribute [DataContract] und [DataMember] hinzugefügt, aber kein Glück. –
Siehe oben Bearbeiten. Stellen Sie sicher, dass Sie auch die Attribute in Ihrem Servicevertrag angeben. Sie sollten eine Service-Schnittstelle haben. Hier sollten die Attribute OperationContract und WebInvoke leben. – Doanair