c# - 当 Startup.cs 在不同的程序集中时,ASP.NET 核心 Web api 返回 404
问题描述
我有 .net 核心 Web API,当我在不同的程序集中隔离Startup.cs时,所有 API 都返回 404,如果我将Startup.cs返回到存在控制器的同一个程序集,它们会再次工作。
这是我的 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
类库中启动文件的命名空间在哪里。
推荐阅读
- jquery - 在axios中为url添加查询参数
- python - Python 守护程序线程未在 Windows 上退出
- anylogic - 创建代理并添加到总体
- java - Java中的静态变量编译时错误,在C中一次内存分配
- magento - 在 Magento 上开发
- swift - 有没有办法使用 `try?` 获取抛出的错误消息是 Swift 吗?
- apache-kafka - 使用 kafka 和 python-kafka 库无限重新平衡消费者群体?
- java - 如何使用 Servlet 在 Java 应用程序中实现 OAuth2 SSO?
- ruby - HAML if else with table row
- php - Laravel 关系相互匹配(火种案例)