2016-07-22 76 views
3

好吧,我現在正在學習aspnet核心,我無法理解應用何時啓動其服務器(如IIS或KestrelServer),以及服務器如何監聽httprequest並將請求轉發給應用程序。有誰能夠幫助我?感謝ASPNET CORE如何啓動以偵聽httprequest?

+0

您是否嘗試過搜索它?如果是,你可以分享你的發現嗎? – Daenarys

+0

我試圖看到他的來源,但我沒有找到 – oldman

回答

2

好吧,讓我們從頭開始(因爲我無法弄清楚你對C#的知識)

每一個C#應用程序必須包含一個主要方法,指定其中程序執行開始,所以它是,默認模板有一類Program在這裏你可以設置你會使用Web服務器的類型,並告訴服務器開始監聽HTTP請求,是這樣的:

public static void Main(string[] args) 
{ 
    var config = new ConfigurationBuilder() 
     .AddCommandLine(args) 
     .Build(); 
    var host = new WebHostBuilder() 
       .UseKestrel() 
       .UseConfiguration(config) 
       .UseStartup<Startup>() 
       .Build(); 
    host.Run(); 
} 

在AspNetCore,甚至在ASPNET( MVC或WebApi)你可以(也應該)使用OWIN(aka Katana或vNext,即微軟的OWIN im分別爲AspNet和AspNetCore)。

OWIN代表一個接口(只是一個規範),它告訴WebServers應該如何與WebApplications交流。通常,它將Http請求處理到一個可以插入中間件的管道,如認證/授權,日誌,錯誤處理等,並且在管道的末端,您應該插入Web應用程序。

在AspNetCore中,您通過在主機配置中使用UseStartup<MyStartupClass>來設置中間件管道,請參閱上面的Main方法,並且因爲您的管道將處理每個HttpRequest。

當建設AspNetCore一個MVC應用程序(.UseMvc())要設置一箇中間件,它告訴你的應用程序,以尋找從Microsoft.AspNetCore.Mvc.Controller繼承尋找REST風格的入口點(HTTP GET,POST ...)班

這只是一個簡單的概述,您可以從這些技術的文檔中瞭解更多信息。只需搜索Katana,vNext,OWIN,OWIN中間件,OWIN流水線等標籤...

+0

我明白這一點。謝謝 – oldman

+0

@oldman如果此答案有用,請將您的問題標記爲已解決;) – Tanato

1

ASP.NET核心應用程序解剖在此asp.net core introduction處討論。

是回答你的問題的一些重要文本是從教程如下:

的ASP.NET應用程序的核心是一個簡單的控制檯應用程序創建在其主要方法中web服務器。主要使用WebHostBuilder,它遵循構建器模式創建Web應用程序主機。構建器具有定義Web服務器(例如UseKestrel)和啓動類(UseStartup)的方法。在上面的示例中,使用了Kestrel Web服務器,但可以指定其他Web服務器。 Startup類是您定義請求處理管道的位置,以及配置應用程序所需的任何服務的位置。啓動類必須是公共的,幷包含以下方法:

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
    } 

    public void Configure(IApplicationBuilder app) 
    { 
    } 
} 

我想這會幫助你瞭解asp.net的核心是如何處理HTTP請求。 謝謝

+0

thanks.best祝願 – oldman