RESTスターターキットで試し始めたばかりで、自分のサービスを構築しようとしている道路ブロックにぶつかりました。私は、アカウント管理のためのサービスを作成しようとしている、と私は私のオブジェクトをシリアル化するサービスを受けることができない、次のエラーをスロー:WCF RESTサービスでXMLをデシリアライズできません
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.
をここにサービスの実際のコードは、(だ "のオフに基づいてプロジェクトに付属のDoWork」メソッド):
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; }
}
私は愚かな何をしないのです:
[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
};
}
}
そして最後に、ではなく、少なくとも、ここですべての問題を引き起こしているオブジェクトがですか?
ありがとうございます!
私はオブジェクトとメソッドとの名前の競合が考えられました。オブジェクト名を「CreateAccountRequest」に変更したほか、[DataContract]および[DataMember]属性を追加しましたが、運はありません。 –
上記の編集を参照してください。サービス契約の属性も指定していることを確認してください。サービスインタフェースが必要です。これが、OperationContract属性とWebInvoke属性が存在する場所です。 – Doanair