【发布时间】:2020-12-10 13:26:16
【问题描述】:
我正在尝试在工作服务中创建一个 API 主机,因此在 CreateDefaultBuilder 中我尝试添加一个 WebBuilder,如下代码所示
Host.CreateDefaultBuilder(args)
.UseSerilog()
.UseWindowsService()
.ConfigureServices((hostContext, services) =>
{
IConfiguration config = hostContext.Configuration;
Configuration Configurations = config.GetSection("ConnectionStrings").Get<Configuration>();
services.AddSingleton(Configurations);
services.AddSingleton<IDataAccess, DataAccess>();
services.AddHostedService<ATMListener>();
services.AddHostedService<DBListener>();
services.AddControllers();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseIISIntegration()
.UseUrls("https://*:44378");
})
.ConfigureWebHost(config =>
{
config.UseUrls("https://*:8080");
});
在启动类中我使用以下代码
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
//endpoints.MapControllers();
endpoints.MapControllerRoute(
name: "Home",
pattern: "{controller}/{action}/{id?}",
defaults: new { Controller = "Home", action = "Index"}
) ;
Log.Warning("Created Controller");
});
}
端点工作正常,我使用 enpoint.MapGet("/"... ) 对其进行了测试,它工作并返回了值... 但是我创建了一个名为 HomeController 的控制器:ControllerBase
//[Route("[controller]")]
//[ApiController]
[Controller]
[ApiController]
public class HomeController : ControllerBase
{
//[HttpGet]
//[Route("Test")]
public string Index()
{
return "Hello world!";
}
}
Startup 没有读取 Controller,所以当我输入 https://localhost:8080/controller/function 时它根本不返回任何内容.. 那么我该如何让它工作呢?
请注意,我尝试添加 Owin 和 SelfHost 依赖项,但它似乎与 .NETCore 不兼容,并且依赖项不断回滚。
【问题讨论】:
-
“我尝试了很多使端点到达控制器但它不会”不是我们可以协助的问题陈述。用具体细节来编辑您的问题,了解您尝试过的方法和无效的方法。
-
@IanKemp 我编辑了声明也许你现在可以理解这个问题了?
标签: c# .net asp.net-core .net-core