분류 전체보기
-
[.NET 11] .NET 11 GA 정식 릴리즈 핵심 변경점과 실무 마이그레이션 가이드Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 11. 11:47
.NET 11이 2026년 11월 10일 GA로 공개됐습니다. 이 글은 실무 프로젝트를 .NET 11로 올릴 때 먼저 확인해야 하는 변경점과 마이그레이션 절차를 순서대로 정리한 것입니다. .NET 11은 STS(Standard Term Support) 릴리즈로 지원 기간이 2년이며, LTS가 필요한 조직은 .NET 10을 계속 쓰는 선택지가 유지됩니다. 절차 릴리즈 기준값 확인최소 하드웨어 요구사항 변경 확인 (실무에서 가장 먼저 걸리는 지점)C# 15 언어 변경점 적용SDK·툴링 변경점 반영ASP.NET Core·EF Core 11 변경점 반영마이그레이션 실행 순서배포 후 롤백 기준 1. 릴리즈 기준값 공식 발표와 다운로드 페이지, GitHub 릴리즈 태그에서 확인한 값입니다. 버전: .NET 11.0..
-
[C#] DateTime vs DateTimeOffset, 서버 시간은 UTC로 관리하기Microsoft .NET/C# 2026. 11. 10. 01:04
서버에서 시간을 다루다 보면 9시간 차이(UTC/KST)로 하루가 밀리는 문제를 만납니다. 저장·전송은 UTC로, 표시만 현지 시간으로 하는 규칙입니다.절차DateTime의 두 가지 KindDateTimeOffset저장 규칙표시 규칙 1. DateTime의 Kindvar local = DateTime.Now; // Kind = Local (서버 시간대 따름)var utc = DateTime.UtcNow; // Kind = Utcvar none = new DateTime(2026,1,1); // Kind = UnspecifiedDateTime.Now는 서버 시간대를 따릅니다. 한국 서버에서 개발하고 미국 서버에 배포하면 14시간 차이가 납니다.2. Dat..
-
[Linux] systemd로 .NET 앱 서비스 등록, 자동 재시작까지Linux 2026. 11. 10. 01:02
Linux 서버에서 .NET 앱을 상시 서비스로 등록하는 systemd 단위 파일 구성입니다.절차게시단위 파일 작성서비스 등록로그 확인 1. 게시dotnet publish -c Release -o /var/www/myapp2. 단위 파일 작성# /etc/systemd/system/myapp.service[Unit]Description=MyApp ASP.NET Core ServiceAfter=network.target[Service]WorkingDirectory=/var/www/myappExecStart=/usr/bin/dotnet /var/www/myapp/MyApp.dllRestart=alwaysRestartSec=10KillSignal=SIGINTUser=www-dataEnvironment=ASPNE..
-
[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..
-
[C#] async/await 데드락 원인과 ConfigureAwait 정리Microsoft .NET/C# 2026. 11. 10. 00:55
UI 앱이나 레거시 코드에서 .Result·.Wait()를 쓰다가 화면이 멈추는 데드락, 그리고 ConfigureAwait(false)가 필요한 이유입니다.절차증상원인: 동기 대기와 컨텍스트해결: async all the way라이브러리에서는 ConfigureAwait(false) 1. 증상// WinForms/WPF 버튼 클릭 핸들러var data = GetDataAsync().Result; // 여기서 멈춤(응답 없음)예외도 없이 그대로 멈춥니다. 디버거로 보면 WaitForSingleObject에서 대기 중입니다.2. 원인await는 기본적으로 원래 SynchronizationContext(UI 스레드)로 돌아오려고 합니다. 그런데 UI 스레드는 .Result에서 이미 블로킹 중이라 돌아갈 곳이..
-
[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..
-
[C#] HttpClient 재시도, IHttpClientFactory와 표준 리질리언스 정책Microsoft .NET/C# 2026. 11. 10. 00:50
외부 API 호출이 가끔 실패할 때 재시도는 필수입니다. .NET 8에서는 Microsoft.Extensions.Http.Resilience로 표준화된 정책을 붙일 수 있습니다.절차패키지 설치IHttpClientFactory 등록정책 세부 조정직접 구현하는 경우 1. 패키지dotnet add package Microsoft.Extensions.Http.Resilience2. 기본 등록builder.Services.AddHttpClient("api", c =>{ c.BaseAddress = new Uri("https://api.example.com"); c.Timeout = TimeSpan.FromSeconds(10);}).AddStandardResilienceHandler();AddStanda..