Web API Service Fabric 中的损坏

Web API Corruption in Service Fabric

我在我的服务结构集群中遇到了两个关于 Web API 无状态服务的怪事。第一个是关于对有状态服务调用的响应缺少的属性。当对 GET 的响应从 class 更改为结构时,第二个是严重错误。详情如下。

问题 #1 - 缺少属性

我有三个项目:

问题是我最近更新了我的 class 库,为 Person 提供了一些新属性(比如 CreatedOn)。 Stateless Web API 和 Stateful Service 都有这个包的最新版本并且被部署(覆盖,而不是升级)。 Stateful Service 正确识别并存储这些新属性。然而,Web API 以某种方式无法创建没有这些新属性的对象。并不是说它们是空的,它们只是根本不存在!

我已经尝试 uninstalling/reinstalling nuget 包,以及清除 bin/obj 文件夹。两者都不起作用。但是,创建一个新的 Web API Service fabric 项目确实有效。

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

楼盘图片:

问题 #2 - 结构崩溃 Web API

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

{ "Message": "An error has occurred.", "ExceptionMessage": "The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.", "ExceptionType": "System.InvalidOperationException", "StackTrace": " at System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes()\r\n at System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request)\r\n at System.Web.Http.HttpRouteCollection.GetRouteData(HttpRequestMessage request)\r\n 在 System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage 请求,CancellationToken cancellationToken)\r\n 在 System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage 请求,CancellationToken cancellationToken)\r\n 在 System.Web.Http.HttpServer。d__0.MoveNext()" }

同样,在另一个相同的 Web API 项目中尝试此操作效果很好。

想法?

当我使用格式错误的路由时,我得到了同样的结果 示例

[路线("/api/info")]

正确的是

[路线("api/info")]