Сервер - 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);
}
Точно по такому принципу работают и остальные методы в проекте, проблемы именно с данным методом...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
По таймеру делаю проверку на появление новых записей в бд и с появлением новой записи необходимо открыть окно с деталями этой записиесли...
При ознакомлении с данным вопросом встретил такое определение: Ключевое слово async
Имею большой текстовый файл(~50000 строк)Через streamreader читаю его, в файле имеются пустые строки