.NET7 MVC项目无需Startup.cs启动测试服务遇404问题求助
.NET 7 MVC 内存测试服务器配置问题
我有一个.NET 7 MVC Web应用,想要创建一个监听指定URL的内存Web服务器,供Selenium浏览器驱动执行浏览器测试使用。
起初我尝试使用WebHost.CreateDefaultBuilder构建IWebHost并启动,但该方法要求提供Startup.cs,报错信息如下:
No application configured. Please specify startup via IWebHostBuilder.UseStartup, IWebHostBuilder.Configure, injecting IStartup or specifying the startup assembly via StartupAssemblyKey in the web host configuration.
但我的项目没有Startup.cs,所有配置都在Program.cs的顶层语句中完成。我不想退回到使用Startup.cs的旧方式,希望得到相关思路及可行示例。
更新
根据Guru Strons的回答,我之前的托管方式已过时,于是进行了如下修改:
我的Web应用中Program.cs重构为如下形式(为简洁删除大量代码):
public static class Program { public static void Main(string[] args) { RunServer(args); } public static void RunServer(string[] args, CancellationToken? cancellationToken = null) { var builder = WebApplication.CreateBuilder(args); builder.WebHost.UseUrls(/* some url */); // 更多服务配置代码... var app = builder.Build(); // 更多管道配置代码... if(cancellationToken == null) { app.Run(); } else { app.RunAsync(cancellationToken.Value); } } }
由于app.Run()会阻塞线程,我使用CancellationToken来处理。在测试项目中,我尝试如下启动测试服务器:
var cancelTokenSource = new CancellationTokenSource(); MyNamespace.Program.RunServer(Array.Empty<string>(), cancelTokenSource.Token);
我保存了cancelTokenSource以便测试结束后停止服务器。虽然Web应用单独运行正常,但在测试项目中启动后,浏览器访问时始终出现404错误。
内容的提问来源于stack exchange,提问作者Mats
相关产品推荐
相关产品推荐

