C# aspnet core web.config未加载

C# aspnet core web.config未加载,c#,asp.net-core,unity-container,C#,Asp.net Core,Unity Container,我正在尝试使用Unity.container创建一个aspnet核心项目 我的问题是加载unity.config,所以我尝试让项目使用web.config 这是我的创业公司 public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>().Use

我正在尝试使用Unity.container创建一个aspnet核心项目

我的问题是加载unity.config,所以我尝试让项目使用web.config

这是我的创业公司

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>().UseUnityServiceProvider(GetContainer());

    private static IUnityContainer GetContainer()
    {

        var unitySection = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
        Dictionary<string, IUnityContainer> containers = new Dictionary<string, IUnityContainer>();
        InitiateContainers(unitySection, containers);
        return containers.Values.First();
    }
    internal const string DefaultContainerName = "Default";

    internal static void InitiateContainers(UnityConfigurationSection unitySection, IDictionary<string, IUnityContainer> containers)
    {
        foreach (var element in unitySection.Containers)
        {
            string name = string.IsNullOrEmpty(element.Name) ? DefaultContainerName : element.Name;
            if (!containers.ContainsKey(name))
            {
                containers.Add(name, new UnityContainer());
            }
            unitySection.Configure(containers[name], element.Name);
        }
    }
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup().UseUnityServiceProvider(GetContainer());
私有静态IUnityContainer GetContainer()
{
var unitySection=(UnityConfigurationSection)ConfigurationManager.GetSection(“unity”);
字典容器=新字典();
InitiateContainers(unitySection,容器);
返回containers.Values.First();
}
内部常量字符串DefaultContainerName=“Default”;
内部静态void InitiateContainers(UnityConfiguration节unitySection,IDictionary容器)
{
foreach(unitySection.Containers中的var元素)
{
string name=string.IsNullOrEmpty(element.name)?DefaultContainerName:element.name;
如果(!containers.ContainsKey(名称))
{
containers.Add(name,newunitycontainer());
}
配置(容器[name],元素.name);
}
}
但是变量“unitySection”总是空的

如何使aspnet核心应用程序加载web.config文件


我需要导入另一个nuget软件包吗?

感谢gunr2171发布到另一个问题

该问题通过对该问题的评论得以解决:


只要将web.config重命名为app.config就可以了。

我以为Asp.net core不使用web.config文件?app.config可以工作,因为Asp.net core web应用程序只是一个控制台应用程序,控制台应用程序可以从app.config读取。然而,仅仅因为你可以,并不意味着你应该。在ASP.NET内核中有一种正确的配置方法,但这不是。但是,如果这是某个第三方库的要求,您可能没有选择。在这种情况下,unity容器使用app.config加载注册,他们正在将unity.container转换为使用json格式,但没有计划重新发布。所以我们必须使用unity,我没有找到另一个使用配置文件并与ASP.NET核心数据集成的DI容器,这很好。这只是一个一般性的警告,你应该使用它只为你绝对必须使用它。不要全力以赴,开始扔进所有东西和厨房水槽,就因为它在那里。我只使用配置来注册默认情况下无法加载的东西,或者按照惯例无法加载的东西,例如,如果我需要传递一个参数,或者如果我需要传递一个名为的依赖项,我有类似的要求要在function app(NET Core 2.0 Azure Functions)中实现。。函数应用程序是类库而不是控制台应用程序。有什么办法可以做到这一点?