首页 文章

为什么当控制器在asp.net核心应用程序的独立程序集中时,TestServer无法找到控制器?

提问于
浏览
10

出于某种原因,当ASP.NET核心控制器在单独的程序集中创建时,TestServer在客户端发出请求时无法找到控制器操作 . (导致404响应)为什么会这样?我该如何解决这个问题?以下是重现的步骤 .

  • 使用.NET核心创建新的ASP.NET Core WebAPI

  • 在单独的项目中创建集成测试,并将测试配置为使用TestServer()客户端并使测试成功运行 .

  • 现在,将控制器分离到其自己的共享库和重构在步骤1中创建的项目,以使用此共享库 .

  • 重新运行包含TestServer()类的测试 . 你现在会注意到它失败了 .

请参阅以下链接以创建集成测试 . Integration testing w/ ASP.NET Core

2 回答

  • 1

    实际上我现在找到了一个解决方案,请参见下面的差异:
    enter image description here

    听起来这可能是TestServer()类的错误以及它在测试运行期间如何托管应用程序 .

    以下是代码行,以防您无法在上面的图片中阅读.AddApplicationPart(Assembly.Load(new AssemblyName(“WebApiToReproduceBug.Controllers”)));

  • 27

    除了joey回答:没有必要调用Assembly.Load()来解决这个bug . 您可以使用以下代码 . ServiceHookController 是来自单独项目的类 .

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc()
            .AddApplicationPart(typeof(ServiceHookController).Assembly);
    }
    

相关问题