1

これはサービスです:

public class InvoiceDetailsService : RestServiceBase<InvoiceDetails>
{
    public override object OnGet(InvoiceDetails request)
    {
        return new InvoiceDetailsResponse();
    }
}

そして、これらはサービスモデルです:

[DataContract]
[Description("Invoice Details web service.")]
[Route("/invoicedetails")] //Optional: Define an alternate REST-ful url for this service
[Route("/invoicedetails/{Id}")]
[Route("/invoicedetails/{Id*}")]
public class InvoiceDetails
{
    public string Id { get; set; }
}

public class InvoiceDetailsResponse : IHasResponseStatus
{
    public InvoiceDetailsResponse()
    {
        this.ResponseStatus = new ResponseStatus();
    }

    public Invoice Invoice { get; set; }
    public ResponseStatus ResponseStatus { get; set; }
}

これは、SharpArchitectureのEntityクラスを継承したInvoiceクラスです。(原因を特定しようとしている他のすべてのプロパティを削除しました。)http://code.google.com/p/sharp-architecture/source/browse/trunk/src/SharpArch/SharpArch.Core/DomainModel/Entity.cs

public class Invoice : Entity
{
    public virtual DateTime Date { get; set; }

    public virtual Double AmountPaid { get; set; }
}

シリアル化された空のInvoiceDetailsResponseをブラウザに戻す必要があります。

私が得ているエラーはこれです。請求書が単純なPOCOであり、エンティティから派生していない場合は得られません。

--TypeInitializationException'ServiceStack.Text.Json.JsonWriterのタイプ初期化子1' threw an exception.</Message><StackTrace> at ServiceStack.Text.Json.JsonWriter1.WriteFn()at ServiceStack.Text.Json.JsonWriter.GetWriteFn(Type type)at ServiceStack.Text.JsonSerializer.SerializeToString(Object value、Type type)at ServiceStack.Text.JsonSerializer.SerializeToString [T](T value)at ServiceStack.WebHostのe:\ Desktop \ Dev Projects \ ServiceStack-master \ src \ ServiceStack.Common \ ServiceModel \ Serialization \ JsonDataContractSerializer.cs:line30のServiceStack.ServiceModel.Serialization.JsonDataContractSerializer.SerializeToString[T](T obj) Endpoints.Formats.HtmlFormat.SerializeToStream(IRequestContext requestContext、Object response、IHttpResponse httpRes)in e:\ Desktop \ Dev Projects \ ServiceStack-master \ src \ ServiceStack \ WebHost.Endpoints \ Formats \ HtmlFormat.cs:line 49 at ServiceStack.WebHost .Endpoints.Extensions.HttpResponseExtensions.WriteToResponse(IHttpResponse応答、オブジェクト結果、ResponseSerializerDelegate defaultAction、IRequestContext serializerCtx、Byte [] bodyPrefix、Byte [] bodySuffix)in e:\ Desktop \ Dev Projects \ ServiceStack-master \ src \ ServiceStack \ WebHost.Endpoints \ Extensions \ IHttpResponseExtensions.cs:line 190

代わりに、サービス用に別のクラスを作成し、マッパーを使用する必要がありますか?(そうするのは冗長なようです。)エンティティを直接使用できないのはなぜですか?

4

1 に答える 1

0

最も内側の例外は、Newtonsoft.Jsonバージョン4.5を探しているというものでした。ServiceStackで入手したバージョンは4.0でした。Newtonsoft.Jsonの最新バージョンにNugetを使用しましたが、エラーはなくなりました。

于 2012-12-09T10:24:06.043 に答える