Aspnet mvc4 webapi导致workerprocess崩溃

时间:2012-05-01 20:43:47

标签: c# asp.net-mvc-4 asp.net-web-api

我在asp.net mvc4网站上遇到WebAPI问题,错误信息是:

在使用本地名称“__type”编写属性后,您必须编写属性“type”=“object”。

堆栈是:

at System.Web.Http.WebHost.HttpControllerHandler.EndProcessRequest(IAsyncResult result)
at System.Web.Http.WebHost.HttpControllerHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

我的方法返回一个对象列表IEnumerable,product is datacontract serializable没有任何问题

我通过全局错误处理程序恢复了此错误,当它发生时,应用程序被回收。

1 个答案:

答案 0 :(得分:0)

您是否尝试过任何建议here?它们似乎都与序列化有关(不使用virtual关键字,指定已知类型等)。

我实际上建议不要做帖子中的人正在描述的内容,即直接从他们的数据库上下文中使用实体而不是将它们变成某种响应模型,原因如下:

  • 如果您的实体发生变化,您可能违反合同与您的任何WebAPI消费者
  • 如果你想从上下文转换任何值,你就不得不在控制器中做到这一点,这种情况很糟糕,因为i * t给控制器增加了映射和转换的责任 *(AutoMapper最适用于此)
  • 作为前两点的组合,您将持久性模型问题与“视图”(或在这种情况下,合同)问题相结合(即,您无需自由更改实体而无需担心合同,反之亦然)

在没有看到更多代码的情况下,不确定您是否正在执行任何这些操作,但它可能有助于使您尝试在ApiController中使用的模型尽可能POCO - y。