gpt4 book ai didi

c# - 当不同程序集中的 Startup.cs 时,ASP.NET Core Web API 返回 404

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:45 25 4
gpt4 key购买 nike

我有 .net 核心 Web API,当我在不同的程序集中隔离 Startup.cs 时,所有 API 都返回 404,如果我将 Startup.cs 返回到同一个程序集在 Controller 存在的地方,它们再次工作。

这是我的 Web API 的 Program.cs:

public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.SetBasePath(Directory.GetCurrentDirectory());
configApp.AddJsonFile("appsettings.json", false, true);
configApp.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", false, true);
});
}

还有我的 Startup.cs:

public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{

services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
factory.Create(typeof(ValidationMessages));
});
}


public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseMvc();
}
}

所以我需要将启动类放在不同的程序集中,然后在多个 Web API 项目中使用它

最佳答案

.UseStartup 替换为以下行:

.UseStartup<Application.AppComponents.Startup>() 
.UseSetting(WebHostDefaults.ApplicationKey, typeof(Program).GetTypeInfo().Assembly.FullName)

其中 Application.AppComponents.Startup 是您的启动文件在类库中的命名空间。

关于c# - 当不同程序集中的 Startup.cs 时,ASP.NET Core Web API 返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55204707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com