Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 手动创建IWebHostEnvironment asp.net core 3.1_C#_.net_Asp.net Core_Asp.net Core 3.1 - Fatal编程技术网

C# 手动创建IWebHostEnvironment asp.net core 3.1

C# 手动创建IWebHostEnvironment asp.net core 3.1,c#,.net,asp.net-core,asp.net-core-3.1,C#,.net,Asp.net Core,Asp.net Core 3.1,在asp.net core 2.1中,我可以创建如下IHostingEnvironment: public IHostingEnvironment CreateHostingEnvironment() { var hosting = new HostingEnvironment() { EnvironmentName = "IntegrationTests" }; return hosting; } 在Asp.net core 3.1中,它被更改为

在asp.net core 2.1中,我可以创建如下
IHostingEnvironment

public IHostingEnvironment CreateHostingEnvironment()
{
    var hosting = new HostingEnvironment()
    {
       EnvironmentName = "IntegrationTests"
    };
    return hosting;
}
在Asp.net core 3.1中,它被更改为
IWebHostEnvironment
,但我需要以类似的方式创建它。目标可能是创建此对象并设置环境名称

public IWebHostEnvironment CreateWebHostEnvironment()
{
    var host = new WebHostEnvironment(); // ???
}
IWebHostEnvironment
接口的唯一内置部分是ASP.NET Core 3.x中的内部接口:

internal class HostingEnvironment : IHostingEnvironment, Extensions.Hosting.IHostingEnvironment, IWebHostEnvironment
{
    public string EnvironmentName { get; set; } = Extensions.Hosting.Environments.Production;

    public string ApplicationName { get; set; }

    public string WebRootPath { get; set; }

    public IFileProvider WebRootFileProvider { get; set; }

    public string ContentRootPath { get; set; }

    public IFileProvider ContentRootFileProvider { get; set; }
}
因此,如果出于某种原因需要创建实现接口的类的实例,基本上可以将上述代码复制到项目中,或者更改类的名称。然后,您可以根据需要创建它的实例


该框架只依赖于接口。

它位于ASP.NET Core 3.x中。根据您的用例,您可能应该考虑创建实现相同接口的自己的类。@ MM8,这是旧的2.1类。新功能是您已链接到该界面。我已经链接到内部实现。内部类实现了
IWebHostEnvironment
@devydasvoroneckis请描述您想要实现什么,也许您不需要创建此类的实例。但是,是否可以使用类似的构建方法(如program.cs文件)来创建一个真正的宿主环境类<代码>主机.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder=>{webBuilder.UseStartup();})这是用于集成测试的,所以我对真正的实现没问题。不,无论如何,不使用反射也不行。但是创建
HostingEnvironment
的实例没有帮助。ASP.NET Core支持使用测试web主机和内存中的测试服务器进行集成测试,如中所述。好的,谢谢。然后我将简单地模拟界面。谢谢,这解决了我遇到的特殊问题。我只需要实例化一个“虚拟”HostEnvironment,以便在控制台应用程序中使用razor服务。