.Net Core 2.1 React и Signalr 1.0.4, выдавая ошибку /gotiate 404 - PullRequest
0 голосов
/ 23 октября 2018

Я сейчас работаю с React и SignalR.Я использую .Net Core 2.1 и пакет Microsoft.AspNetCore.App для получения последней версии SignalR.Я также установил @ aspnet / signalr и продолжаю получать ошибку 404, потому что она все еще пытается перейти к конечной точке /gotiate, которую я знаю, что она больше не использует.Я подтвердил, что я в курсе всех пакетов.Какие-нибудь указатели на то, куда я должен идти?

    const hubConnection = new HubConnectionBuilder().withUrl('http://localhost:3000/ChatHub').build();

public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            //services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
            //{
            //    builder
            //        .AllowAnyMethod()
            //        .AllowAnyHeader()
            //        .WithOrigins("http://localhost:3000");
            //}));

            services.AddSignalR();
            //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";
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            //app.UseCors("CorsPolicy");

            app.UseFileServer();

            app.UseSignalR(routes =>
            {
                routes.MapHub<ChatHub>("/ChatHub");
            });

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

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

            app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "ClientApp";

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

1 Ответ

0 голосов
/ 23 октября 2018

Я получаю ошибку 404, потому что она все еще пытается перейти к конечной точке /gotiate, которую я знаю, что она больше не использует

ASP.NET Core SignalR определенно все еще используетконечная точка /negotiate.В предварительном просмотре вместо этого мы использовали запрос OPTIONS, но это вызвало множество проблем, поэтому мы вернулись к конечной точке /negotiate.

Похоже, вы используете "сервер разработки" (spa.UseReactDevelopmentServer в вашем стартапе).Обычно это означает, что сервер разработки обслуживает содержимое HTML / JS с другого сервера , на котором работает приложение ASP.NET Core (а не просто статические файлы, обслуживаемые приложением ASP.NET Core).).Если это так, при подключении вам нужно ссылаться на сервер ASP.NET Core, используя полный URL-адрес.

Это связано с тем, что ваш контент HTML / JS обслуживается сервером разработки на http://localhost:X, а вашСервер ASP.NET Core работает на http://localhost:Y.Поэтому, когда вы используете /ChatHub в качестве URL-адреса, браузер интерпретирует его как http://localhost:X/ChatHub, так что вы обращаетесь не к своему приложению ASP.NET Core (с сервером SignalR), а к серверу dev, на котором нет содержимого.URL и выдает 404.

...