Microsoft .NET/ASP.Net & ASP.Net Core
-
[ASP.NET Core] Swagger UI에 JWT 인증(Authorize) 추가하기Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 10. 00:58
Swagger UI에서 Authorize 버튼으로 Bearer 토큰을 넣어 테스트하는 설정입니다.절차패키지 설치보안 스키마 등록UI에서 토큰 입력자주 하는 실수 1. 패키지dotnet add package Swashbuckle.AspNetCore2. 보안 스키마 등록builder.Services.AddSwaggerGen(o =>{ o.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { Name = "Authorization", Type = SecuritySchemeType.Http, Scheme = "bearer", BearerFormat = "JWT", In = Paramet..
-
[ASP.NET Core] CORS 오류 "blocked by CORS policy" 원인과 설정Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 10. 00:53
브라우저에서 프론트엔드와 API를 따로 띄우면 만나는 blocked by CORS policy 오류의 원인과 최소 설정입니다.절차에러 메시지 확인서버 설정미들웨어 위치자주 하는 실수 1. 에러 메시지Access to fetch at 'http://localhost:5000/api/values' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.CORS는 브라우저가 막는 것이지 서버가 요청을 거부한 것이 아닙니다. 서버 로그에는 200으로 찍히는데 화면에서만 실패하는 이유입니다.2. 서버 설정bui..
-
[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..
-
[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. ..
-
[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..
-
[ASP.NET Core] "Cannot consume scoped service from singleton" 오류 해결Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 10. 00:18
ASP.NET Core DI 컨테이너에서 싱글톤(Singleton) 서비스가 스코프(Scoped) 서비스를 주입받을 때 발생하는 InvalidOperationException과 해결 방법입니다.절차에러 메시지 확인원인: 수명주기(Lifetime) 불일치해결 1: 서비스 수명주기 맞추기해결 2: IServiceScopeFactory로 스코프 직접 생성자주 하는 실수 정리 1. 에러 메시지System.InvalidOperationException: Cannot consume scoped service 'AppDbContext' from singleton 'ReportCache'. at Microsoft.Extensions.DependencyInjection.ServiceProvider...앱 시작 시점(..