Service Fabric中的Web API损坏

时间:2016-08-02 14:02:56

标签: asp.net-web-api azure-service-fabric

我在服务架构集群中遇到了两个关于Web API无状态服务的奇怪之处。第一个关于响应有状态服务的响应的缺失属性。第二个是对GET的响应从类更改为结构时的严重错误。详情如下。

问题#1 - 缺少属性

我有三个项目:

  • 具有名为Person的类的类库。下面的两个项目利用此库视图提供私有nuget包。
  • 无状态Web API,具有GET以检索所有人员。
  • 有状态服务,实施ReliableDictionary,其中包含所有人。 Stateless Web API调用一个方法,该方法返回此字典中的所有人。

问题在于我最近更新了我的类库,为Person提供了一些新属性(比如CreatedOn)。无状态Web API和有状态服务都具有此软件包的最新版本并已部署(覆盖,而不是升级)。有状态服务正确识别并存储这些新属性。但是,Web API在某种程度上不会创建没有这些新属性的对象。它不像是空的,它们根本就不存在!

我尝试卸载/重新安装nuget包,以及清除bin / obj文件夹。两者都不起作用。但是,创建新的Web API Service结构项目确实有效。

任何想法,或者我的项目是否已被损坏?

物业图片:

问题#2 - Struct Crashing Web API

这可能与第一个问题有关,并使用相同的库和服务。我尝试将Person对象更改为结构,但是对api的任何调用都会引发以下错误:

{   "消息":"发生了错误。",   " ExceptionMessage":"该对象尚未初始化。确保在所有其他初始化代码之后在应用程序的启动代码中调用HttpConfiguration.EnsureInitialized()。",   " ExceptionType":" System.InvalidOperationException",   " StackTrace":"在System.Web.Http.Http.HttpRouteCollection上的System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes()\ r \ n中,在System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot,HttpRequestMessage request)\ r \ n中。 System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage请求,CancellationToken cancellationToken)中的GetRouteData(HttpRequestMessage请求)\ r \ n在System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)中的\ r \ n r \ n在System.Web.Http.HttpServer.d__0.MoveNext()" }

再一次,在另一个相同的Web API项目中尝试这个工作就可以了。

思想?

1 个答案:

答案 0 :(得分:1)

当我使用格式错误的路线时,我也一样 例子

〔路线(" / API /信息&#34)]

正确

〔路线(" API /信息&#34)]