无法将 System.Web.Http.WebHost.Routing.HostedHttpRoute 转换为 System.Web.Http.Routing.IHttpRoute

Cannot cast System.Web.Http.WebHost.Routing.HostedHttpRoute to System.Web.Http.Routing.IHttpRoute

为 Web API 解决方案将 ASP.NET Web API 更新到 2.2(从 nuget 包版本 4.0 到 5.2)后,我无法再转换类型为 [= 的对象12=] 到 System.Web.Http.Routing.IHttpRoute

根据 HostedHttpRoutesource,它实现了 IHttpRoute,因此转换应该有效。但是,这个来源对于 5.2 来说一定已经过时了...?

有谁知道 HostedHttpRoute 是否发生了任何会导致此问题的变化?如果是这样,请分享您掌握的有关此类更改的任何信息。

如果您想知道我为什么要尝试执行此转换 - 它是检索 Web API 应用程序和 return 一个 HttpRouteCollection 的所有路由的一部分。这涉及调用 RouteConfig.RegisterRoutes() 方法来检索 RouteCollection 对象。此 RouteCollection 对象中的每个项目都是一个 HttpWebRoute 对象,其中包含一个名为 HttpRoute 且类型为 HostedHttpRoute 的 属性。这些 HostedHttpRoute 中的每一个都将被转换为 IHttpRoute,然后将其添加到 HttpRouteCollection.

3问题在于,编写此转换代码的应用程序安装了 API v5.2.3,而 API Web 应用程序安装了 API v5.2.2,因此IHttpRoute 类型存在版本不匹配问题。出于某种原因,5.2.3 适用于 4.0,但不适用于 5.2.2。我将网络应用程序更新到 5.2.3,问题已解决。