如何解决错误“尝试通过安全透明方法'System.Web.Http.GlobalConfiguration.get_Configuration()
Posted
技术标签:
【中文标题】如何解决错误“尝试通过安全透明方法\'System.Web.Http.GlobalConfiguration.get_Configuration()【英文标题】:How do I resolve the error "Attempt by security transparent method 'System.Web.Http.GlobalConfiguration.get_Configuration()如何解决错误“尝试通过安全透明方法'System.Web.Http.GlobalConfiguration.get_Configuration() 【发布时间】:2013-08-30 20:18:15 【问题描述】:我创建了一个包含两个项目的解决方案:一个 MVC 4 和一个类库。该解决方案编译并运行良好。然后我 install-package 'Microsoft.AspNet.WebApi.OData -pre 以引入 OData WebApi 功能。当我这样做时,我在运行时收到以下错误:
尝试通过安全透明方法“System.Web.Http.GlobalConfiguration.get_Configuration()”访问安全关键类型“System.Web.Http.HttpConfiguration”失败。
当 WebApiConfig.Register(GlobalConfiguration.Configuration) 在 Global.asax 中运行时
一旦我这样做了,卸载软件包似乎并不能解决问题。它显然删除了 OData 组件,但随后留下了导致此问题的任何程序集。使用 -RemoveDependencies 删除会删除库中的所有 WebApi 引用,并且我无法将其恢复为工作状态。
我在什么包中,如何在 vanilla MVC4 应用程序中启用 WebApi OData?
【问题讨论】:
【参考方案1】:您需要 Web API OData 的预发布版本吗?如果是这样,您需要更新所有其他 Web API 包以匹配该版本。 如果没有,那就去做吧,
install-package 'Microsoft.AspNet.WebApi.OData
没有-pre
选项
【讨论】:
【参考方案2】:如果您从其模板创建 MVC 4 应用程序,那么您正在安装 Web API 4.0。如果你使用
install-package 'Microsoft.AspNet.WebApi.OData -pre
您将依赖于 ASP.NET Web API 5.0 rc。
我的建议是使用“Empty ASP.NET web application”模板而不是 MVC 4.0 模板。
【讨论】:
这让我走上了正轨。我最终做了 Install-Package Microsoft.AspNet.WebApi -Pre 并且很开心。 在 VS2012 Web API 模板上安装Microsoft.AspNet.WebApi.Cors
并编辑 WebApiConfig.Register
后出现相同的错误。升级到VS2013模板后一切正常。【参考方案3】:
给定版本的 WebAPI 的程序集不匹配。我的失败是因为我引用了不匹配的System.Web.Http.WebHost
版本。所以你可以...
从 NuGet 安装最新的 WebAPI
-或-
确保您的所有Microsoft.AspNet.WebApi.*
软件包都在同一版本上
【讨论】:
【参考方案4】:我在 VS 的包管理器控制台中运行了“update-package Microsoft.AspNet.WebApi”,效果非常好。
【讨论】:
【参考方案5】:我遇到了问题,我注意到以前的服务器代码使用发布模式构建,我正在上传使用调试模式代码的构建。 所以,我换成了 Release 模式,然后问题就解决了。
【讨论】:
【参考方案6】:我遇到了同样的问题,解决方法是使用与 Syste.Web.Http 相同版本的“System.Web.Http.WebHost”,即 5.2.6
【讨论】:
【参考方案7】:如果上述答案中不存在此软件包,则可以安装它
安装包 Microsoft.AspNet.WebApi
【讨论】:
以上是关于如何解决错误“尝试通过安全透明方法'System.Web.Http.GlobalConfiguration.get_Configuration()的主要内容,如果未能解决你的问题,请参考以下文章