【发布时间】:2021-05-23 10:48:58
【问题描述】:
GlobalConfiguration.Configuration 在新的 ASP.NET Core WebApi 项目 (.Net 5.0) 中似乎不可用。
重现步骤:
- 创建一个新的“ASP.NET Core Web Api”项目。 (目标框架:.NET 5.0,语言:C#)
- 将此行添加到您的代码中的任意位置:
var config = GlobalConfiguration.Configuration;
例如将其添加到 Startup.cs:
public Startup(IConfiguration configuration)
{
var c = GlobalConfiguration.Configuration; // this line was added
Configuration = configuration;
}
- 您需要
System.Web.Http.GlobalConfiguration的软件包 这似乎与Microsoft.AspNet.WebApi.WebHostNuget 包对应,所以安装它:
Install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.7
- 运行应用程序,发现它在我们的新代码行失败,但以下异常:
System.TypeLoadException
HResult=0x80131522
Message=Could not load type 'System.Web.Routing.RouteTable'
from assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Source=System.Web.Http.WebHost
StackTrace:
at System.Web.Http.GlobalConfiguration.<>c.<CreateConfiguration>b__11_0()
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
at System.Lazy`1.CreateValue()
at System.Lazy`1.get_Value()
at System.Web.Http.GlobalConfiguration.get_Configuration()
at AspNetCore5._0.Program.Main(String[] args) in C:\work\AspNetCore5.0\Program.cs:line 17
我最终想要实现的目标...... 是使用 AutoFac 作为我的依赖关系解析器(我得到了这个工作)。但是当我按照AutoFac's documentation on FilterProviders 创建我自己的自定义Filters(例如ModelValidationFilter、ResponseFilter、ExceptionFilter)时,它需要我获得GlobalConfiguration.Configuration。 AutoFac documentation on obtaining GlobalConfiguration 建议我为“标准 IIS 托管”获取 GlobalConfiguration.Configuration,如下所示:
var config = GlobalConfiguration.Configuration;
...但它显然失败了。
对于这方面的任何帮助或建议,我将不胜感激。 谢谢!
【问题讨论】: