2012-12-08 45 views
1

这是服务:TypeInitializationException试图使用夏普架构ServiceStack

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; } 
} 

这是发票类,夏普架构的实体继承类。 (我已删除了所有其他属性试图事业隔离。)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而不是从实体派生的话,我不会得到这个错误。

关于“ServiceStack.Text.Json.JsonWriter 1' threw an exception.</Message><StackTrace> at ServiceStack.Text.Json.JsonWriter 1.WriteFn()在ServiceStack.Text.Json.JsonWriter.GetWriteFn(类型类型)在ServiceStack.Text.JsonSerializer.SerializeToString --TypeInitializationExceptionThe类型初始化(对象e:\ Desktop \ Dev Projects \ ServiceStack-master \ ServiceStack.ServiceModel.Serialization.JsonDataContractSerializer.SerializeToString [T](T obj)中的ServiceStack.Text.JsonSerializer.SerializeToString [T](T值) src \ ServiceStack.Common \ ServiceModel \ Serialization \ JsonDataContractSerializer.cs:e:\ Desktop \ Dev Projects \ ServiceStack-master中ServiceStack.WebHost.Endpoints.Formats.HtmlFormat.SerializeToStream(IRequestContext requestContext,Object response,IHttpResponse httpRes) \ src \ ServiceStack \ WebHost.Endpoints \ Formats \ HtmlFormat.cs:line 49 a在e:\ Desktop \ Dev Projects \ ServiceStack-master \ src \中,ServiceStack.WebHost.Endpoints.Extensions.HttpResponseExtensions.WriteToResponse(IHttpResponse响应,Object result,ResponseSerializerDelegate defaultAction,IRequestContext serializerCtx,Byte [] bodyPrefix,Byte [] bodySuffix) ServiceStack \ WebHost.Endpoints \ Extensions \ IHttpResponseExtensions.cs:line 190

我应该为我的服务创建一个单独的类,并使用映射器吗? (这样做似乎是多余的。)为什么我不能直接使用我的实体?

回答

0

最内部的异常说它正在寻找Newtonsoft.Json版本4.5。我用ServiceStack得到的版本是4.0。我使用Nuget的最新版本的Newtonsoft.Json,错误消失了。