首页 > 解决方案 > 如何更正错误 CS0122:“WebHost”由于其保护级别而无法访问

问题描述

我目前正在尝试对我在 C# 中的 Visual Studio Code 中开发的 asp.net 应用程序进行集成测试。

由于我对集成测试非常陌生,因此我试图遵循教程或其他人采取的一些步骤来做同样的事情,所以我开始遵循本教程,https://referbruv.com/blog/posts/writing-integration -tests-in-aspnet-core-using-xunit。在本教程中解释了集成测试的必要步骤是定义一个用于启动 ASP.NET 测试服务器的设置类以及要传递的必要设置,它们通过覆盖默认 WebApplicationFactory 类并提供我们的WebHostBuilder 方法的自己的实现。

他们这样做:

public class MyReaderApiAppFactory : WebApplicationFactory<Startup>
{
    protected override IWebHostBuilder CreateWebHostBuilder()
    {
        return WebHost.CreateDefaultBuilder()
            .UseStartup<Startup>();
    }
}

所以我试图模仿他们这样做:

using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.Testing;
using DDDSample1;
using Microsoft.AspNetCore.Hosting;

public class TripApiAppFactory : WebApplicationFactory<Startup>
{
    protected override IWebHostBuilder CreateWebHostBuilder()
    {
        return WebHost.CreateDefaultBuilder().UseStartup<Startup>();
    }
}

这是我现在程序中的类,所以我基本上只是从他们的类中切换了类的名称并添加了一些需要的包。现在,当我尝试在我的项目上运行 dotnet build 时,会出现此错误:

C:\Users\berna\OneDrive\Área de Trabalho\Informática\3ºano - Informática\Arqsi\Projecto\projeto_integrador_grupo67\mdv\Tests\IntegrationTests\TripApiAppFactory.cs(10,10): 
error CS0122: 'WebHost' is inaccessible due to its protection level [C:\Users\berna\OneDrive\Área de Trabalho\Informática\3ºano - Informática\Arqsi\Projecto\projeto_integrador_grupo67\mdv\DDDNetCore.csproj]

有人可以解释一下我是否可以解决此错误,如果可以,如何解决?任何帮助将不胜感激。此外,如果有人对如何进行集成测试有任何建议,更准确地说是在 VSCode 上用 C# 开发的 .net 应用程序,那也很棒。

提前感谢您提供的任何评论、帮助或反馈。

标签: c#asp.netvisual-studio-codeintegration-testingvscode-settings

解决方案


看起来您正在使用WebHost派生类中的属性,即使该属性是基类的私有成员,因此无法在派生类中访问。

看看这个,这就是微软不得不说的。


推荐阅读