Server=localhost
Reference containers by name, not IP, whenever possible. Otherwise you’ll need to constantly update the IP address you use.
Port=6002
"Postgres": "Server=localhost; Port=6002; Database=post; User ID=postgres; Password=passwd; Pooling=true"
"Postgres": "Server=postgres_db; Port=5432; Database=post; User ID=postgres; Password=passwd; Pooling=true"version: '3.8'
networks:
postgres-network:
driver: bridge
services:
gchain.posts.api:
image: gchain.posts.api
build:
context: .
dockerfile: GChain.Posts.Api/Dockerfile
ports:
- "80:8080"
networks:
- postgres-network
depends_on:
- postgres_db
postgres_db:
container_name: postgres_post
image: postgres:latest
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-passwd}
POSTGRES_DB: post
volumes:
- postgres-data:/var/lib/postgresql/data
ports:
- "6002:5432"
networks:
- postgres-network
restart: unless-stopped
volumes:
postgres-data: @Html.BeginForm()
{
<label>Страна</label>
@Html.EditorForModel(x => x.Country)
<label>Город</label>
@Html.EditorForModel(x => x.City)
}
num=>num!=2Ведь эта строка на много проще
var noTwo = nums.Where(x=>x != 2);
// или
var noTwo=from num in nums
where num!=2
select num; Status Code. Зачем вам передавать точное описание, что там оно не нашло, если вы можете просто передавать 404 и клиент пусть сам генерирует себе ошибку.return StatusCode. Есть нормальные методы StatusResult к которым относятся Ok(), BadRequest() и тот же NotFound(). В эти методы можете передавать какие-то мета-данные если вам нужно. Либо можете использовать Response.Headers. Но если вам прям очень-очень нужно впихнуть туда вот это вообще об ошибке, так что бы ваш сервер был на все руки мастер, можете сделать что-то типа такого:return NotFound(new { message = "Omg, Not Found!!!" });JS вытянуть ошибку? Я бы использовал просто ajax:$.ajax({
url: '...',
method: 'get',
success: (response): {
let data = JSON.parse(response.responseText);
console.log(data.message); //Omg, Not Found!!!
}
}); 

Rebuild вашего solution'а. Потом даблклик по проекту, в этом .csproj файле ищите секцию ItemGroup в которой будут ваши Protobuf. К ним додаёте аттрибут ProtoRoot, который (Для удобной работы) должен быть таким же как и пусть в аттрибуте Include без указания названия файла .proto.proto ваш другой .proto, они должны быть хотя бы на одном уровне. Другими словами, вы можете импортировать только файлы, который находятся по архитектуре на том же уровне или ниже, потому что в import запрещено использования символа точки и запятой. Это значит, что вы не сможете выйти на уровень выше
if (context.Exception?.GetType() == typeof(SecurityTokenExpiredException))
{
IJwtService jwtService = context.HttpContext.RequestServices.GetService<IJwtService>();
if (context.Request.Cookies.TryGetValue("refresh-token", out string refreshToken))
{
Result<ClaimsPrincipal> principalResult = jwtService.ValidateAndDecodeToken(refreshToken);
if (!principalResult.IsSuccess || principalResult.Value == null)
{
return Task.CompletedTask;
}
Result<string> renewAccessTokenResult = jwtService.Encode(principalResult.Value);
if (!renewAccessTokenResult.IsSuccess && renewAccessTokenResult.ValidationErrors.Any())
{
return Task.CompletedTask;
}
context.Response.Cookies.Append("access-token", renewAccessTokenResult.Value);
context.Response.StatusCode = 200;
context.HttpContext.User = principalResult.Value;
context.Principal = principalResult.Value;
context.Success();
}
}
return Task.CompletedTask;refresh token и из него извлекаем ClaimPrincipal, далее на его основе делаем access token из того же сервиса и обрабатываем запрос, что бы он возвращал нужный статус. Как говорил Andrei SunnyPh , это допустимая практика (Спасибо) domain: *****
nserver: ns1.reg.ru.
nserver: ns2.reg.ru.
state: REGISTERED, DELEGATED, UNVERIFIED
person: Private Person
registrar: REGRU-RU
admin-contact: http://www.reg.ru/whois/admin_contact
created: 2024-02-11T05:41:55Z
paid-till: 2025-02-11T05:41:55Z
free-date: 2025-03-14
source: TCI