我有一个承载REST API的ASP.NET Core Web应用程序。我尝试将基于React的单页面应用程序(SPA)添加到服务器,但应用程序不使用MVC。
当我启用Router
我的应用不再加载时。如果我禁用Router
并仅托管静态应用,则会正确加载,但当然它无法与网络API通信。
我还成功使用Python的内置Web服务器和使用Go编写的简单文件服务器来托管我的SPA,但是,它再一次,它不能"谈话& #34;到我的API而不运行单独的服务和/或代理/重定向URL。我的目标是一个可以同时为API和静态用户界面提供服务的C#应用程序。
以下是我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:
是否可以从不使用MVC的ASP.NET Core应用程序托管SPA?