我遇到了使用Web API的项目的问题。
在global.asax文件中,我有这个,它给出了一个错误
类型' System.TypeLoadException'的例外情况发生在System.Web.Http.WebHost.dll中但未在用户代码中处理
其他信息:覆盖成员时违反了继承安全规则:' System.Web.Http.WebHost.Routing.HostedHttpRoute.get_RouteTemplate()'。覆盖方法的安全性可访问性必须与要覆盖的方法的安全性可访问性相匹配。
在这一行
RouteTable.Routes.MapHttpRoute(name:="DefaultApi", routeTemplate:="api/{controller}/{id}", defaults:=New With { _
Key .id = RouteParameter.[Optional] _
})
我升级了一些包。这曾经是我的packages.config文件
<package id="Microsoft.AspNet.WebApi.Client" version="4.0.20710.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="4.0.20710.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.20710.0" targetFramework="net45" />
现在它们升级为:
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.30506.0" targetFramework="net45" />
我知道为什么我在升级后才开始出现此错误?
非常感谢!
答案 0 :(得分:1)
我有项目A,它引用了项目B. 在项目B中有控制器,我在那里为这些控制器调用RouteTable.Routes.MapHttpRoute。
我发现在我的案例中,问题是在项目中,WebApi NuGet包版本高于引用的项目B.