スロー、私は基本的なサービスが行くと戻り値の型としてHttpResponseMessageを使用してのフルパワーを活用しようとしています。私はリストを返すと、私は回避できない周りの次のエラーを取得しようとしています。WCFのWeb API 0.6 - HttpResponseMessageにリスト<T>を返すが、私はWCFのWeb APIにかなり新しいです例外
これは非常に基本的なストレートXMLサービスです。
すべてのアイデアをいただければ幸いです。ありがとう。
タイプ 'System.Net.Http.HttpResponseMessage`1は[System.Collections.Generic.List`1 [Entities.UploadedDocumentSegmentType]' をシリアル化することができません。 DataContractAttribute属性でそれをマークし、すべてのメンバを にマークすることをDataMemberAttribute属性でシリアル化する必要があることを考慮してください。タイプ がコレクションの場合は、 CollectionDataContractAttributeでマークすることを検討してください。他のサポートされている種類については、Microsoft .NET Framework のドキュメントを参照してください。ここで
は私のサービスです:
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class DocumentService
{
[WebGet(UriTemplate = "/GetAllUploadableDocumentTypes")]
public HttpResponseMessage<List<UploadedDocumentSegmentType>> GetAllUploadableDocumentTypes()
{
UploadedDocumentManager udm = new UploadedDocumentManager();
return new HttpResponseMessage<List<UploadedDocumentSegmentType>>(udm.GetAllUploadableDocumentTypes());
}
}
クラスUploadedDocumentSegmentTypeは、このような次のように定義されます
[Serializable]
public class UploadedDocumentSegmentType
{
public UploadedDocumentSegmentType();
public int DocTracSchemaID { get; set; }
public int ID { get; set; }
public string Type { get; set; }
}
そして私もこれを試してみました:
[Serializable]
[DataContract]
public class UploadedDocumentSegmentType
{
public UploadedDocumentSegmentType();
[DataMember]
public int DocTracSchemaID { get; set; }
[DataMember]
public int ID { get; set; }
[DataMember]
public string Type { get; set; }
}
UDPATE:私は、WCFを使用しましたRESTサービスアプリケーションcrにするVisual Studioテンプレートサービスを提供する。私は最初から試して、WebGETメソッドのサンプルの戻り値の型をWebResponseMessageに変更し、そこに同じエラーがスローされます。それは私のコードではなく、私の人生のために私は理解できないものです。
だから、どこか深いところに問題があるように思えるかもしれません。それはHttpResponseMessageで返されたもので爆発します。このようなものであっても、同じエラーが発生します。私は{ 新しいHttpResponseMessage( "テスト"、HttpStatusCodeを返す ...私は本当に基本的で愚かな何かが欠けてる知っている '[のWebGet(UriTemplate = "/ GetTest2")]' 公共HttpResponseMessage GetTest2() 。OK); } –
Spacetop
私はWCF REST Service Application VSテンプレートが実際にWCF Web APIと互換性があるとは思わない。デフォルトでは、WCF Web APIはJSON/XMLを返し、DataContractSerializerは使用しません。 –
正しいセットアップの正しい方向を教えてください。ありがとうございました。私はこれがWeb APIだったと仮定しました。なぜならSVCファイルがなくなったからです...これは私が使ったものです:http://visualstudiogallery.msdn.microsoft。COM/fbc7e5c1-a0d2-41bd-9d7b-e54c845394cd – Spacetop