У меня есть веб-приложение ASP.NET Core, в котором размещен REST API.Я пытаюсь добавить основанное на React одностраничное приложение (SPA) на сервер, но приложение не с использованием MVC .
Когда я включаюRouter
мое приложение больше не загружается.Если я отключаю Router
и размещаю только статическое приложение, оно загружается правильно, но, разумеется, оно не может связываться с веб-API.
Я также успешно разместил свой SPA, используя встроенный Pythonвеб-сервер и использует простой файловый сервер, написанный на Go, но, опять же, он не может «общаться» с моим API без запуска отдельных служб и / или прокси / перенаправления URL-адресов.Моя цель - одно приложение на C #, которое может обслуживать как API, так и статический пользовательский интерфейс.
Здесь приведены соответствующие части моего MyStartup
класса:
public void ConfigureServices(IServiceCollection services)
{
services.AddRouting();
services.AddLogging();
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
app.UseDefaultFiles();
app.UseStaticFiles(new StaticFileOptions {
ServeUnknownFileTypes = true
});
app.UseRouter(buildRoutes(app));
}
private IRouter buildRoutes(IApplicationBuilder app)
{
// TODO: Figure out how to add a default (and versioned) API base URL to the Router...
string url(string path) {
return $"api/{path}";
}
RouteBuilder routeBuilder = new RouteBuilder(app, new RouteHandler(null));
/// Notify API
routeBuilder.MapGet(url("status"), GetControllerStatus);
routeBuilder.MapPost(url("heartbeat"), GotHeartbeat);
routeBuilder.MapGet(url("items/{id}"), httpCtx => {
string id = httpCtx.GetRouteValue("id").ToString();
return RetrieveItem(httpCtx, id);
});
// ... More routes ...
return routeBuilder.Build();
}
и моего Main
класс содержит этот отрывок:
IWebHost host =
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseUrls("http://*:11111")
.UseStartup<MyStartup>()
.Build();
host.Run();
Я исследовал следующие инструменты и учебные пособия, но все они, похоже, требуют различных подходов с использованием MVC:
Возможно ли разместить SPA из приложения ASP.NET Core, которое не использует MVC?