분류 전체보기
-
[ASP.NET Core] 전역 예외 처리, IExceptionHandler와 ProblemDetails (.NET 8)Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 10. 00:47
.NET 8에서 추가된 IExceptionHandler로 예외 응답을 한 곳에서 처리하는 방법입니다. 컨트롤러마다 try-catch를 넣지 않아도 됩니다.절차핸들러 작성등록응답 형식 확인주의할 점 1. 핸들러 작성public class GlobalExceptionHandler : IExceptionHandler{ private readonly ILogger _logger; public GlobalExceptionHandler(ILogger logger) => _logger = logger; public async ValueTask TryHandleAsync(HttpContext ctx, Exception ex, CancellationToken ct) { _logger.L..
-
[.NET] BackgroundService로 주기 작업 만들기, 종료 처리까지Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 10. 00:45
ASP.NET Core에서 주기적으로 도는 작업(정리, 동기화, 알림)을 만드는 가장 단순한 방법인 BackgroundService 정리입니다.절차최소 구현DI 주입 주의정상 종료 처리운영에서 확인할 것 1. 최소 구현public class CleanupWorker : BackgroundService{ private readonly ILogger _logger; public CleanupWorker(ILogger logger) => _logger = logger; protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationReq..
-
[C#] record 타입 정리, class와 차이와 with 식Microsoft .NET/C# 2026. 11. 10. 00:42
C# 9에서 추가된 record를 실무에서 쓸 때 필요한 부분만 정리했습니다.절차class와의 차이값 비교와 with 식Deconstruct와 패턴 매칭주의할 점 1. class와의 차이// 한 줄로 값 객체 정의public record UserDto(int Id, string Name);// 위 한 줄이 아래를 자동 생성합니다public class UserDto{ public int Id { get; init; } public string Name { get; init; } public UserDto(int id, string name) => (Id, Name) = (id, name); // 값 기반 Equals, GetHashCode, ToString}init 접근자라 생성 후에..
-
[EF Core] 마이그레이션 명령 정리, 자주 나는 오류 해결Database 2026. 11. 10. 00:39
EF Core 마이그레이션에서 실제로 쓰는 명령과, 자주 나는 오류 대응을 정리했습니다.절차도구 설치마이그레이션 추가·적용운영 반영 방식자주 나는 오류 1. 도구 설치dotnet tool install --global dotnet-efdotnet add package Microsoft.EntityFrameworkCore.Design설치 후 dotnet ef --version이 안 되면 ~/.dotnet/tools가 PATH에 있는지 확인합니다.2. 마이그레이션 추가와 적용dotnet ef migrations add InitialCreatedotnet ef database update프로젝트가 여러 개면 데이터 프로젝트와 시작 프로젝트를 지정합니다.dotnet ef migrations add AddOrde..
-
[ASP.NET Core] JWT 토큰 발급·검증 최소 구현 (.NET 8)Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 10. 00:37
.NET 8 ASP.NET Core에서 JWT를 직접 발급하고 검증하는 최소 구성입니다. 별도 인증 서버 없이 아이디/비밀번호 로그인 API를 만들 때 씁니다.절차패키지 설치appsettings.json에 키 설정토큰 발급 서비스검증 등록로그인 API와 보호된 API 1. 패키지dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer2. 설정{ "Jwt": { "Issuer": "vgstudio", "Audience": "vgstudio-client", "Key": "32바이트-이상-충분히-긴-비밀키" }}대칭키(HS256)는 32바이트 이상이어야 합니다. 키는 소스에 넣지 말고 환경 변수나 사용자 시크릿으로 관리합니다.3. ..
-
[C#] TaskCanceledException과 OperationCanceledException, HttpClient 타임아웃 구분Microsoft .NET/C# 2026. 11. 10. 00:33
HttpClient 요청이 타임아웃됐는데 로그에는 "작업이 취소되었습니다"로만 남아 원인을 못 찾는 경우가 많습니다. 두 예외의 차이와 구분 방법입니다.절차증상 확인원인: .NET 5 이후 타임아웃도 취소로 처리구분: InnerException이 TimeoutException인지 확인타임아웃과 사용자 취소 분리 처리 1. 증상System.Threading.Tasks.TaskCanceledException: A task was canceled. at System.Net.Http.HttpClient.HandleFailure(Exception e, ...)내가 취소한 적이 없는데 취소 예외가 올라와서 서버 문제인지 코드 문제인지 헷갈립니다.2. 원인HttpClient의 기본 타임아웃(100초)이 지나면 내..
-
[ASP.NET Core] "No authenticationScheme was specified" 401 오류 원인과 해결Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 10. 00:30
컨트롤러에 [Authorize]가 걸려 있는데 인증 스킴이 등록되지 않았을 때 나는 오류입니다. JWT를 붙이다가 가장 자주 만나는 메시지입니다.절차에러 메시지 확인원인: 인증 스킴 등록 누락AddAuthentication에 기본 스킴 지정미들웨어 순서 확인 1. 에러 메시지System.InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found.The default schemes can be set using either AddAuthentication(string defaultScheme) or AddAuthentication(Action configureOpti..
-
[ASP.NET Core] Kestrel "Failed to bind to address" 오류, 포트 점유 해결Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 10. 00:23
Kestrel이 지정한 포트를 이미 다른 프로세스가 잡고 있어서 발생하는 IOException과 해결 방법입니다.절차에러 메시지 확인포트를 점유한 프로세스 찾기해결 1: 점유 프로세스 종료해결 2: 포트 변경개발 환경에서 자주 있는 케이스 1. 에러 메시지System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address already in use. ---> System.Net.Sockets.SocketException (98): Address already in use앱이 뜨지 않고 콘솔에 위 메시지가 찍히면, 코드 문제가 아니라 포트 충돌입니다.2. 포트를 점유한 프로세스 찾기Windowsnetstat -ano | findst..