joe*_*oey 19 c# unit-testing asp.net-web-api asp.net-core-mvc asp.net-core
出于某种原因,当ASP.NET核心控制器在单独的程序集中创建时,TestServer在客户端发出请求时无法找到控制器操作.(导致404响应)为什么会这样?我该如何解决这个问题?以下是重现的步骤.
请参阅以下链接以创建集成测试.使用ASP.NET Core进行集成测试
joe*_*oey 38
听起来这可能是TestServer()类的错误以及它在测试运行期间如何托管应用程序.
以下是代码行,以防您无法在上面的图片中阅读.AddApplicationPart(Assembly.Load(new AssemblyName("WebApiToReproduceBug.Controllers")));
dan*_*ers 29
对于那些在迁移到netcoreapp3.0.csproj期间遇到这种情况的人,我发现上述答案有效,但是您可以通过更改 .csproj 文件本身中的引用来更干净地做到这一点。
就我而言,我更改了第一行 XML
<Project Sdk="Microsoft.NET.Sdk">
到
<Project Sdk="Microsoft.NET.Sdk.Web">
致谢:https : //github.com/aspnet/Mvc/issues/5992#issuecomment-395408983
Kar*_*ral 10
除了joey回答:没有必要调用Assembly.Load()来解决这个bug.您可以使用以下代码.ServiceHookController是一个单独的项目的类.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddApplicationPart(typeof(ServiceHookController).Assembly);
}
Run Code Online (Sandbox Code Playgroud)
小智 10
如果您遵循MS 文档中的先决条件,则会加载来自不同程序集的控制器。
在我的情况下,添加Microsoft.AspNetCore.Mvc.Testing NuGet 包解决了这个问题,我不再需要调用AddApplicationPart了。
| 归档时间: |
|
| 查看次数: |
5077 次 |
| 最近记录: |