带有React SPA的ASP.NET核心REST API

时间:2018-05-30 22:07:48

标签: c# reactjs asp.net-core

我有一个承载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?

0 个答案:

没有答案