Отправка запроса сначала не выполняется, затем отвечает - PullRequest
0 голосов
/ 15 января 2020

Используя angular 8 в качестве клиента, .NetCore 2.2 Web API, когда я пытаюсь сделать пост-запрос, он сначала запрашивает опцию со статусом 204, затем он запрашивает пост-запрос, который отправляется на сервер, и я могу отследить это в моем контроллере, но когда действие контроллера хочет вернуть данные, это терпит неудачу. Интересно, что если я снова, без задержки, отправлю тот же почтовый запрос, он получит успех!

In this image то же действие контроллера вызывается без задержки.

I Я должен добавить, что в моем angular я использую сигнализатор между запросами, и я изменил некоторые политики Cors, это имеет какое-либо отношение к этому?:

namespace testAPI
{
    public class Startup
    {
        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.AddSignalR();
            services.AddSingleton<IChatRoomService, ChatController>();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);



            services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
            {
                //before signalr
                //builder.AllowAnyOrigin()
                //       .AllowAnyMethod()
                //       .AllowAnyHeader();

                //after signalr
                builder
                .AllowAnyHeader()
                .AllowAnyMethod()
                .SetIsOriginAllowed(_ => true)
                .AllowCredentials();
            }));

            services.Configure<BrotliCompressionProviderOptions>(options =>
            {
                options.Level = CompressionLevel.Optimal;
            });

            services.Configure<GzipCompressionProviderOptions>(options =>
            {
                options.Level = CompressionLevel.Optimal;
            });



            services.AddResponseCompression(options =>
            {

                options.Providers.Add<BrotliCompressionProvider>();
                options.Providers.Add<GzipCompressionProvider>();
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseResponseCompression();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {

                app.UseHsts();
            }



            app.UseHttpsRedirection();
            #region SignalR

            app.UseCors("MyPolicy");   //after signalr
            app.UseSignalR(routes =>
            {
                routes.MapHub<ChatHub>("/chat");
                routes.MapHub<ChatAdminHub>("/chat/admin");

            });

            #endregion
            app.UseMvc();





        }
    }
}
...