programing

OWIN Startup.cs 클래스를 사용하고 모든 구성을 해당 클래스로 이동하는 경우 Global.asax.cs 파일이 필요합니까?

subpage 2023. 6. 8. 19:50
반응형

OWIN Startup.cs 클래스를 사용하고 모든 구성을 해당 클래스로 이동하는 경우 Global.asax.cs 파일이 필요합니까?

들어 ASP 5 에서 파일 파일 ASP.NET MVC 5 파일을 Global.asax.cs를 지정하고 클스를지고구코다드이음동다합니로 이동합니다.Startup.cs Configuration()다음과 같은 방법, 단점은 무엇입니까?

public partial class Startup
{
     public void Configuration(IAppBuilder app)
     {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        ConfigureAuth(app);
    }
}

ASP.NET 4 애플리케이션을 ASP.NET 5로 업그레이드하고 Startup.cs 클래스에서 구성해야 하는 부분을 사용할 때 시작 및 구성과 관련된 것으로 보이는 두 개의 다른 클래스에서 종속성 주입 및 기타 구성을 수행하지 않습니다.

시작.Application_Start보다 약간 늦게 구성이 호출되지만 대부분의 경우 차이가 크게 중요하지 않을 것으로 생각합니다.

Global.asax에 다른 코드를 보관한 주요 이유는 다음과 같습니다.

  1. 이전 버전의 MVC와의 일관성. (현재 모든 사람이 이 코드를 찾을 것으로 예상하는 부분입니다.)
  2. 다른 이벤트 처리기를 추가할 수 있습니다.Global.asax에서는 Session_Start 및 Application_Error와 같은 다른 메서드를 처리할 수 있습니다.
  3. 다양한 인증 시나리오에서 정확성.시작.구성 방법은 Microsoft가 있는 경우에만 호출됩니다.오윈. 진행자.bin 디렉토리에 SystemWeb.dll이 있습니다.이 DLL을 제거하면 시작 호출이 자동으로 중지됩니다.구성. 이해하기 어려울 수 있습니다.

세 번째 이유는 기본적으로 이 접근 방식을 취하지 않은 것 중 가장 중요한 이유라고 생각합니다. 일부 시나리오에서는 이 DLL이 포함되어 있지 않으며, 관련 없는 코드(경로 등록 등)가 배치된 위치를 무효화하지 않고 인증 접근 방식을 변경할 수 있어 좋습니다.

그러나 이러한 이유가 시나리오에 적용되지 않는다면 이 방법을 사용해도 괜찮을 것입니다.

전체 단계를 원하는 사용자:OWIN 기반의 IIS 호스팅 웹 API를 만들려면 다음 단계를 수행해야 합니다.

  1. File -> New -> Project
  2. 에서대화,Installed -> templates -> Other Project types -> Visual Studio Solutions -> Blank Solution targeting .NET 4.6
  3. 솔루션에서 마우스 오른쪽 버튼을 클릭하고 추가합니다.Project -> Web -> ASP.NET Web Application(. 4 대상)NET 4.6 표준)

    3.1 이제 ASP.NET 4.5 템플릿에서 Empty를 템플릿으로 선택합니다.

    3.2 이렇게 하면 두 개의 너겟 패키지가 있는 빈 솔루션이 생성됩니다.

    Microsoft.CodeDom.Providers.DotNetCompilerPlatform v 1.0.0
    Microsoft.Net.Compilers v 1.0.0
    
  4. 다음 패키지를 설치합니다.

    Install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.3
    Install-Package Microsoft.AspNet.WebApi -Version 5.2.3
    Install-Package WebApiContrib.Formatting.Razor 2.3.0.0
    

OWIN의 경우:

Install-Package Microsoft.Owin.Host.SystemWeb 
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost    

그런 다음 구성 방법을 사용하여 Startup.cs 을 추가합니다.

[assembly:OwinStartup(typeof(namespace.Startup))]
public class Startup
    {
        /// <summary> Configurations the specified application. </summary>
        /// <param name="app">The application.</param>
        public static void Configuration(IAppBuilder app)
        {
            var httpConfiguration = CreateHttpConfiguration();

            app
                .UseWebApi(httpConfiguration);
        }

        /// <summary> Creates the HTTP configuration. </summary>
        /// <returns> An <see cref="HttpConfiguration"/> to bootstrap the hosted API </returns>
        public static HttpConfiguration CreateHttpConfiguration()
        {
            var httpConfiguration = new HttpConfiguration();
            httpConfiguration.MapHttpAttributeRoutes();

            return httpConfiguration;
        }
}

이제 다음에서 상속되는 클래스를 추가합니다.ApiController에 주석달다을에것으로 을 달아야 합니다.RoutePrefix 및 은 " 성및작방법"입니다.Route + HttpGet/PutPost를 나타냄) .

이것은 웹 애플리케이션을 시작/호스팅하는 것이 매우 혼란스러웠기 때문에 어떻게 발전했는지에 대한 저의 이해입니다.간단한 요약:

Classic ASP.NET: 필수 IIS 파이프라인의 마지막 단계에서 실행할 응용 프로그램 코드만 작성

ASP.NET with OWIN: .NET 웹 서버를 구성하고 응용 프로그램 코드를 작성합니다.더 이상 IIS에 직접 연결되지 않으므로 더 이상 사용할 필요가 없습니다.

ASP.NET Core: 응용 프로그램 코드를 사용하고 작성하도록 호스트와 웹 서버를 모두 구성합니다.전체 .NET Framework 대신 .NET Core를 대상으로 하는 경우 더 이상 .NET 웹 서버를 사용해야 하는 의무가 없습니다.


이제 어떻게 작동하는지, 어떤 클래스가 응용 프로그램을 시작하는 데 사용되는지에 대해 조금 더 자세히 설명하겠습니다.

클래식 ASP.NET

ASP 프로그램에는 ASP.NET 파일이 .Global.asax진입점으로 파일을 작성합니다.이러한 응용 프로그램은 IIS에서만 실행될 수 있으며 코드는 IIS 파이프라인 끝에서 실행됩니다(따라서 IIS는 CORS, 인증...).코드가 실행되기도 전에).IIS 7에서는 ASP.NET 런타임을 IIS에 통합하는 통합 모드로 응용 프로그램을 실행할 수 있습니다.이렇게 하면 코드가 이전에는(또는 IIS 자체에서만) 불가능했던 기능을 구성할 수 있습니다. 를 들어,Application_Start의 신의이트의 Global.asax파일링 또는 새로운 기능 사용<system.webserver>의 의션에 web.configjava.

ASP.NET(OWIN 포함)

먼저 OWIN은 라이브러리가 아니라 .NET 웹 서버(예: IIS)가 웹 응용 프로그램과 상호 작용하는 방식의 사양입니다.마이크로소프트는 프로젝트 카타나(여러 개의 다른 NuGet 패키지를 통해 배포됨)라는 OWIN을 구현했습니다.이 구현은 다음을 제공합니다.IAppBuilder에볼 수있인스이페터에서 StartupMicrosoft에서 제공하는 클래스 및 일부 OWIN 미들웨어 구성 요소(OMC).용사를 합니다.IAppBuilder기본적으로 IIS 파이프라인에 연결되지 않고 플러그 앤 플레이 방식으로 미들웨어를 구성하여 웹 서버용 파이프라인(위의 포인트와 같이 IIS7+의 ASP.NET 파이프라인만 포함)을 생성합니다(그러나 이제는 인증을 위한 미들웨어 구성 요소인 CORS에 미들웨어 구성 요소를 사용합니다...).이로 인해 응용 프로그램은 더 이상 IIS에 특별히 연결되지 않으며 다음과 같은 .NET 웹 서버에서 실행할 수 있습니다.

  • OwinHost 패키지를 사용하여 Katana 웹 서버로 응용 프로그램을 자체 호스팅할 수 있습니다.
  • 마이크로소프트사.오윈. 진행자.시스템 웹 패키지는 내부적으로 미들웨어를 올바른 수명 이벤트에 구독하여 통합 모드에서 OWIN 응용 프로그램을 호스팅하는 데 사용됩니다.

모든 것을 혼란스럽게 만드는 것은Global.asax여전히 OWIN과 함께 지원됩니다.Startup그들 둘 다 비슷한 일을 할 수 있는 반면에, 수업.예를 들어 CORS를 구현할 수 있습니다.Global.asaxOWIN 미들웨어를 사용한 인증이 매우 혼란스럽습니다.

내 경험의 법칙은 그것을 제거하는 것입니다.Global.asax을 사용하는 것에 찬성하여 모두 철하다.StartupOWIN을 추가해야 할 때마다.

ASP.NET 코어

ASP.NET Core는 차세대 버전이며 이제 .NET Core 또는 전체 .NET Framework를 대상으로 지정할 수 있습니다..NET Core를 대상으로 하면 .NET Standard를 지원하는 모든 호스트에서 응용 프로그램을 실행할 수 있습니다.즉, 이전과 같이 .NET 웹 서버로 더 이상 제한되지 않고 Docker 컨테이너, Linux 웹 서버, IIS...에서 응용 프로그램을 호스팅할 수 있습니다.

웹 프로그램의 은 ASP.NET Core입니다.Program.cs하고 합니다. 여기서 호스트를 구성하고 다시 지정합니다.Startup파이프라인을 구성하는 클래스입니다.사용()IAppBuilder.UseOwin확장 방법)은 선택 사항이지만 완전히 지원됩니다.

언급URL : https://stackoverflow.com/questions/20168978/do-i-need-a-global-asax-cs-file-at-all-if-im-using-an-owin-startup-cs-class-and

반응형