Нет связи клиент - сервер

250
06 декабря 2021, 23:50

Сервер - asp.net core web API, клиент - Angular 8 на сервере создаю метод

[HttpGet("[action]/{id}"), Route("savefeedasync")]
        [HttpGet("[action]/{id}/{message}"), Route("savefeedasync")]
        public async Task SaveFeedAsync(int id, string message)
        {
        }

на клиенте подключаюсь и отправляю информацию

SaveFeedAsync(id: number, message: string) {
    let token = localStorage.getItem("jwt");
    return this.http.get(this.urlMessage + "/" + "savefeedasync" + "/" + id + "/" + message, {
      headers: new HttpHeaders({
        "Authorization": "Bearer " + token,
        "Content-Type": "application/json"
      })
    });
  }

прошел тоxкой останова, с клиента информация уходит корректно, но метод на сервере молчит, никак не реагирует... вроде везде подключил связm, и контроллер работает, ведь я юзаю его методы, но именно в этом случае полная тишина...

Код всего что учавствует: Стартап:

    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.AddTransient<IUserService, UserService>();
            services.AddTransient<IFriendService, FriendService>();
            services.AddTransient<IMessageService, MessageService>();
            services.AddTransient<IAuthService, AuthService>();
            services.AddTransient<IFileService, FileService>();
            services.AddSingleton<IUserIdProvider, CustomUserIdProvider>();
            services.AddSignalR();
            services.AddCors(options =>
            {
                options.AddPolicy("EnableCORS", builder =>
                {
                    builder.
                    AllowAnyOrigin().
                    AllowAnyHeader().
                    AllowAnyMethod().
                    WithOrigins("http://localhost:4200").
                    AllowCredentials();
                });
            });
            services.AddScoped<DBUserContext>();
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidateAudience = true,
                    ValidateLifetime = true,
                    ValidateIssuerSigningKey = true,
                    ValidIssuer = "http://localhost:5000",
                    ValidAudience = "http://localhost:5000",
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("superSecretKey@345"))
                };
                options.Events = new JwtBearerEvents
                {
                    OnMessageReceived = context =>
                    {
                        var accessToken = context.Request.Query["access_token"];
                        // если запрос направлен хабу
                        var path = context.HttpContext.Request.Path;
                        if (!string.IsNullOrEmpty(accessToken) &&
                             (path.StartsWithSegments("/chat")))
                        {
                            // получаем токен из строки запроса
                            context.Token = accessToken;
                        }
                        return Task.CompletedTask;
                    }
                };
            });
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }
        // 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.UseHsts();
            }
            app.UseCors("EnableCORS");
            app.UseAuthentication();
            app.UseSignalR(routes =>
            {
                routes.MapHub<ChatHub>("/chat");
            });
            app.UseHttpsRedirection();          
            app.UseDefaultFiles();
            app.UseStaticFiles();
            app.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"Resources")),
                RequestPath = new PathString("/Resources")
            });
            app.UseMvc();
        }
    }

Сам контроллер:

    [Route("api/[controller]")]
    [ApiController]
    public class MessagesController: Controller
    {
        DBUserContext db;
        IMessageService _messageService;
        public MessagesController(DBUserContext context, IMessageService messageService)
        {
            db = context;
            _messageService = messageService;
        }
        [HttpGet("[action]/{id}"), Route("sevemessageasync")]
        [HttpGet("[action]/{id}/{message}"), Route("sevemessageasync")]
        public async Task SeveMessageAsync(int id, string message)
        {
            string currentUserName = User.Identity.Name;
            await _messageService.SeveMessageAsync(currentUserName, id, message);           
        }
        [HttpGet("[action]/{id}"), Route("getmessagesasync")]
        [HttpGet("[action]/{id}/{friendid}"), Route("getmessagesasync")]
        public async Task <List<string>> GetMessagesAsync(int id, int FriendId)
        {
            return await _messageService.GetMessagesAsync(id, FriendId);            
        }
        // Вот этот метод без связи
        [HttpGet("[action]/{id}"), Route("savefeedasync")]
        [HttpGet("[action]/{id}/{message}"), Route("savefeedasync")]
        public async Task SaveFeedAsync(int id, string message)
        {
        }
    }
}

Код компонента:

SaveFeedAsync(id: number, messages: string) {
    return this.http.get("http://localhost:5000/api/messages/savefeedasync" + "/" + id + "/" + messages);
  }

Точно по такому принципу работают и остальные методы в проекте, проблемы именно с данным методом...

READ ALSO
Открытие нескольких окон по таймеру

Открытие нескольких окон по таймеру

По таймеру делаю проверку на появление новых записей в бд и с появлением новой записи необходимо открыть окно с деталями этой записиесли...

79
Ключевое слово async

Ключевое слово async

При ознакомлении с данным вопросом встретил такое определение: Ключевое слово async

102
Работа с методом

Работа с методом

Как правильно такое реализовывается или я что то не то себе надумал))) ?

78
Чтение большого текстового файла

Чтение большого текстового файла

Имею большой текстовый файл(~50000 строк)Через streamreader читаю его, в файле имеются пустые строки

157