【问题标题】:TypeInitializationException while trying to use Sharp Architecture with ServiceStack尝试将 Sharp Architecture 与 ServiceStack 一起使用时出现 TypeInitializationException
【发布时间】:2012-11-26 17:57:59
【问题描述】:

这是服务:

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

这是 Invoice 类,继承自 Sharp Architecture 的 Entity 类。 (我已经删除了所有其他属性,试图找出原因。)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 返回到浏览器。

我得到的错误是这个,如果 Invoice 是一个简单的 POCO 并且不是从实体派生的,我不会得到这个错误。

--TypeInitializationExceptionServiceStack.Text.Json.JsonWriter.GetWriteFn(Type type) at ServiceStack.Text.JsonSerializer.SerializeToString(Object value) 的 'ServiceStack.Text.Json.JsonWriter1' threw an exception.&lt;/Message&gt;&lt;StackTrace&gt; at ServiceStack.Text.Json.JsonWriter1.WriteFn() 的类型初始化器, 在 e:\Desktop\Dev Projects\ServiceStack-master\src 的 ServiceStack.ServiceModel.Serialization.JsonDataContractSerializer.SerializeToString[T](T obj) 处的 ServiceStack.Text.JsonSerializer.SerializeToString[T](T value) 处键入 type) \ServiceStack.Common\ServiceModel\Serialization\JsonDataContractSerializer.cs:第 30 行 ServiceStack.WebHost.Endpoints.Formats.HtmlFormat.SerializeToStream(IRequestContext requestContext, Object response, IHttpResponse httpRes) in e:\Desktop\Dev Projects\ServiceStack-master\ src\ServiceStack\WebHost.Endpoints\Formats\HtmlFormat.cs:第 49 行在 ServiceStack.WebHost.Endpoints.Extensions.HttpResponseExtensions.WriteToResponse(IHttpResponse 响应,对象结果,ResponseSerializerDelegate defaultAction,IRequestContext serializerCt x, Byte[] bodyPrefix, Byte[] bodySuffix) 在 e:\Desktop\Dev Projects\ServiceStack-master\src\ServiceStack\WebHost.Endpoints\Extensions\IHttpResponseExtensions.cs:line 190

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

【问题讨论】:

    标签: servicestack sharp-architecture


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-12
      • 2017-02-14
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多