You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:54:57