Здравствуйте, я пытаюсь разветвить свою таблицу маршрутизации, чтобы мои запросы отправлялись либо в ASP NET Web Api Controller
, либо в Middleware
, который обрабатывает Websockets
.
. Я не понимаю, почему маршрут http
HTTP
маршрут работает, если я использую app.UseMvc()
вместо x.UseMvc()
(локальная область действия IApplicationBuilder).
Программа
public static void Main(string[] args) {
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) {
var builder = new WebHostBuilder();
builder.UseStartup<Startup>();
var url = Address.Default.ToUrl(); // http://0.0.0.0:9300 -tried with ending '/' too
Debug.WriteLine(url);
builder.UseKestrel().UseUrls(url);
return builder;
}
Запуск
public class Startup {
public Startup(IConfiguration configuration) {
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services) {
services.AddOptions();
services.AddMvc();
services.AddSingleton<RealtimeService>();
}
public IConfiguration Configuration;
public void Configure(IApplicationBuilder app) {
app.UseCors(x => { x.AllowAnyHeader(); x.AllowAnyOrigin(); x.AllowAnyMethod(); });
app.Map("/api", (x) => {
Debug.WriteLine($"api:{DateTime.Now.ToShortTimeString()}");
x.UseMvc(); //passes through if i use 'app.UseMvc'
});
app.Map("/ws", (x) => {
Debug.WriteLine($"ws:{DateTime.Now.ToShortTimeString()}");
x.UseMiddleware<RealTimeWare>(); // works !!
});
}
}