Развертывание приложения React на сервере Windows IIS8 (виртуальная машина Azure) - PullRequest
0 голосов
/ 02 апреля 2019

Пожалуйста, помогите.У меня есть приложение реакции, которое прекрасно работает при запуске из VS2017.Это же приложение при размещении на виртуальной машине Azure (IIS-8, Windows Server) выдает мне 404 или 500 ошибок.

Моя структура каталогов хостинга работает для моего приложения .Net и смешанных приложений .net и React, но не для моегоновое приложение React only.

Моя структура каталогов - wwwroot> Dashboard.Я копирую свою производственную сборку в эту папку панели инструментов.

Мой webconfig:

`<?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
          <system.webServer>
            <handlers>
                <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
            </handlers>
            <aspNetCore processPath="dotnet" arguments=".\Dashboard.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
            <rewrite>
                    <rules>
                        <rule name="React Routes" stopProcessing="true">
                            <match url=".*" />
                                <conditions logicalGrouping="MatchAll">
                                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                                    <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                                </conditions>
                            <action type="Rewrite" url="/" />
                        </rule>
                    </rules>
                </rewrite>
            </system.webServer>
        </location>
    </configuration>`

введите описание изображения здесь

1 Ответ

0 голосов
/ 04 апреля 2019

Насколько я знаю, основное приложение asp.net использует services.AddSpaStaticFiles для обслуживания приложения React вместо использования перезаписи URL.

Я предлагаю вам проверить метод Startup.cs Configure и ConfigureServices, чтобы убедиться, что вы добавили настройки SPA.

Коды, как показано ниже:

     public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        // In production, the React files will be served from this directory
        services.AddSpaStaticFiles(configuration =>
        {
            configuration.RootPath = "ClientApp/build";
        });
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseSpaStaticFiles();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller}/{action=Index}/{id?}");
        });

        app.UseSpa(spa =>
        {
            //the source path of the react application
            spa.Options.SourcePath = "ClientApp";

            if (env.IsDevelopment())
            {
                spa.UseReactDevelopmentServer(npmScript: "start");
            }
        });
    }
...