OpenSource-Hub

aspnetcore

프레임워크

dotnet/aspnetcore

클라우드 웹 애플리케이션을 빌드하기 위한 크로스 플랫폼 .NET 프레임워크.

개요

ASP.NET Core는 Web 앱, IoT 앱, 모바일 백엔드와 같은 최신 클라우드 기반 인터넷 애플리케이션을 빌드하기 위한 오픈 소스 크로스 플랫폼 프레임워크입니다. .NET을 기반으로 실행되며 모듈식 구성 요소를 제공하고 오버헤드가 매우 낮습니다.

README 미리보기

ASP.NET Core\n============\n\n[](https://www.dotnetfoundation.org/)\n[](https://github.com/dotnet/aspnetcore/blob/main/LICENSE.txt) [](https://github.com/dotnet/aspnetcore/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) [](https://github.com/dotnet/aspnetcore/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)\n[](https://aka.ms/dotnet-discord)\n\nASP.NET Core is an open-source and cross-platform framework for building modern cloud-based internet-connected applications, such as web apps, IoT apps, and mobile backends. ASP.NET Core apps run on [.NET](https://dot.net), a free, cross-platform, and open-source application runtime. It was architected to provide an optimized development framework for apps that are deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your ASP.NET Core apps cross-platform on Windows, Mac, and Linux. [Learn more about ASP.NET Core](https://learn.microsoft.com/aspnet/core/).\n\n## Get started\n\nFollow the [Getting Started](https://learn.microsoft.com/aspnet/core/getting-started) instructions.\n\nAlso check out the [.NET Homepage](https://www.microsoft.com/net) for released versions of .NET, getting started guides, and learning resources.\n\nSee the [Triage Process](https://github.com/dotnet/aspnetcore/blob/main/docs/TriageProcess.md) document for more information on how we handle incoming issues.\n\n## How to engage, contribute, and give feedback\n\nSome of the best ways to contribute are to try things out, file issues, join in design conversations,\nand make pull-requests.\n\n* [Download our latest daily builds](./docs/DailyBuilds.md)\n* Follow along with the development of ASP.NET Core:\n    * [Community Standup](https://live.asp.net): The community standup is held every week and streamed live on YouTube. You can view past standups in the linked playlist.\n    * [Roadmap](https://aka.ms/aspne

FAQ (5)

문제 해결
.NET 10.0.11에 갑자기 libmsalruntime.so가 포함되면서 빌드 크기가 38 MB 증가하는 이유는 무엇인가요?

이는 Microsoft.EntityFrameworkCore.SqlServer 10.0.11–10.0.13에서 도입된 전이 종속성 체인으로 인해 발생하며, 해당 버전에서 Microsoft.Data.SqlClient가 6.1.1에서 6.1.6으로 업그레이드되었습니다. SqlClient 6.1.6은 Microsoft.Identity.Client.Broker 4.84.2에 종속되며, 이는 다시 Microsoft.Identity.Client.NativeInterop 0.20.6을 끌어옵니다. 이 패키지는 38 MB 크기의 libmsalruntime.so를 runtimes/linux-x64/native에 포함하여 제공합니다. dotnet nuget why Microsoft.Identity.Client.NativeInterop 명령으로 해당 경로를 확인할 수 있습니다. 우회 방법: 프로젝트에서 Microsoft.Data.SqlClient 버전 7.1.1 이상을 명시적으로 참조하세요. 이 버전에는 이 네이티브 종속성이 더 이상 포함되지 않으므로 libmsalruntime.so가 빌드 출력에서 사라집니다. EFCore.SqlServer는 향후 릴리스에서 SqlClient 7.1.1로 업그레이드될 예정이며, 그러면 수동 재정의 없이 문제가 해결될 것입니다.

원본 Issue #68568
문제 해결
ASP.NET Core에서 UseStatusCodePagesWithReExecute를 사용할 때 속도 제한 정책이 적용되지 않는 이유는 무엇인가요?

이는 미들웨어 순서 지정 문제입니다. UseRateLimiter가 UseStatusCodePagesWithReExecute보다 먼저 등록되면, rate limiter가 재실행 분기 외부에 위치하게 되어 재실행된 엔드포인트의 정책을 평가하지 않습니다.

해결 방법 — status-code-pages 미들웨어를 라우팅보다 먼저 등록하고, rate limiter는 라우팅 이후에 등록하십시오:

app.UseStatusCodePagesWithReExecute("/b");
app.UseRouting();
app.UseRateLimiter();

이 순서를 사용하면 재실행 시 라우팅이 다시 실행되고 rate limiter가 포함되므로, 새로 선택된 엔드포인트(예: /b)를 읽고 새 lease를 획득하며, 남은 permit이 없으면 요청을 거부합니다. 참고: status-code-pages 미들웨어보다 앞에 배치된 미들웨어는 재실행 중에 다시 실행되지 않습니다.

원본 Issue #69942
문제 해결
.NET 11에서 수정된 .NET 10의 Blazor 재연결 문제를 해결하는 방법은?

.NET SDK 버전 10.0.400 이상으로 업그레이드하세요(8월 11일 출시). 원래 .NET 11용으로 만들어진 재연결 수정 사항이 .NET 10 브랜치로 백포트되어 이 SDK 버전에 포함되었습니다. 업데이트 후에도 pause/resume 또는 재연결 문제가 계속 발생하면 dotnet/aspnetcore GitHub 리포지토리에 새 이슈를 등록하세요.

원본 Issue #67257
문제 해결
MSAL을 사용하는 Blazor WASM이 로그인 후 요청된 ReturnUrl 대신 앱 루트로 리디렉션되는 이유는 무엇인가요?

이것은 Microsoft.Authentication.WebAssembly.Msal 10.0.8–10.0.12에서 발생한 회귀 버그입니다. getUser 및 getAccessToken과 같은 동시 호출이 초기화가 완료되기 전에 AuthenticationService.init에 진입하여 두 개의 MSAL 인스턴스가 생성될 수 있습니다. 첫 번째 인스턴스는 sessionStorage에서 저장된 returnUrl을 제거하고, 이어서 두 번째 인스턴스가 상태 없이 로그인을 완료하므로 Blazor가 Navigation.BaseUri로 대체됩니다.

해결 방법: PR #69735 및 #69736이 포함된 패치된 릴리스로 업그레이드하세요. 패치된 버전이 아직 제공되지 않는 경우, 마지막으로 정상 작동했던 버전으로 임시 다운그레이드하세요:

dotnet add package Microsoft.Authentication.WebAssembly.Msal --version 10.0.7

근본적인 수정 사항은 초기화 프로미스를 캐시하여, 동시 호출자들이 각각 인스턴스를 생성하고 리디렉션 상태를 소비하는 대신 동일한 MSAL 인스턴스를 공유하도록 합니다.

원본 Issue #69734
문제 해결
ASP.NET Core 10.0.9로 업그레이드한 후 사용자 지정 IOutputCachePolicy가 인증된 응답의 캐싱을 중단한 이유는 무엇인가요?

이 문제는 ASP.NET Core 10.0.9부터 적어도 10.0.12까지 존재하는 회귀 버그입니다. DefaultPolicy.ServeResponseAsync가 이제 인증된 사용자에 대해 AllowCacheStorage = false를 설정하므로, CacheRequestAsync에서 캐싱을 활성화한 사용자 지정 정책이 재정의됩니다.

해결 방법: 사용자 지정 정책은 기본 정책 이후에 실행되므로, 사용자 지정 정책의 ServeResponseAsync에서 해당 플래그를 다시 설정하세요:

public ValueTask ServeResponseAsync(OutputCacheContext context, CancellationToken cancellationToken)
{
    if (context.HttpContext.User?.Identity?.IsAuthenticated == true)
    {
        context.AllowCacheStorage = true;
    }

    return ValueTask.CompletedTask;
}

CacheRequestAsync에 있는 기존의 AllowCacheStorage = true와 만료/vary-by 설정은 그대로 유지하세요. 이 방법은 사용자 간에 공유해도 안전한 인증된 응답에만 사용하고, 사용자별 데이터에는 적절한 CacheVaryByRules를 구성하세요.

영구적인 수정: PR #69580 및 해당 백포트(.NET 10용 #69725, .NET 11용 #69724)가 포함된 ASP.NET Core 릴리스로 업그레이드하세요. dotnet --info로 설치된 런타임을 확인하세요.

원본 Issue #69386