ASPNET CORE如何开始监听httprequest?

时间:2016-07-22 08:06:31

标签: c#

好吧,我现在正在学习aspnet核心,我无法理解应用程序何时启动其服务器(如IIS或KestrelServer),以及服务器如何监听httprequest并将请求转发给应用程序。有谁能够帮我?感谢

2 个答案:

答案 0 :(得分:3)

好吧,让我们从头开始(因为我无法弄清楚你对C#的了解)

每个C#应用程序必须包含一个Main方法,指定程序执行的开始位置,因此,默认情况下,模板具有类Program,您可以在其中设置要使用的WebServer类型,并告诉服务器开始侦听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(也就是Katana或vNext,分别是微软针对AspNet和AspNetCore的OWIN实现)。

OWIN表示一个接口(只是一个规范),它告诉WebServers应该如何与WebApplications通信。通常它会将Http请求处理为可以插入中间件的管道,例如身份验证/授权,日志,错误处理等等,在管道的末尾,您应该插入Web应用程序。

在AspNetCore中,您可以在主机配置中使用UseStartup<MyStartupClass>设置中间件管道,请参阅上面的Main方法,并且简单,因为您的管道将处理每个HttpRequest。

在AspNetCore(.UseMvc())中构建MVC应用程序时,您正在设置一个中间件,告诉您的应用程序查找从Microsoft.AspNetCore.Mvc.Controller继承的类以查找RESTful入口点(HTTP GET,POST。 ..)

这只是一个简单的概述,您可以在这些技术的文档中学习更多内容。只需搜索Katana,vNext,OWIN,OWIN Middleware,OWIN Pipeline等标签......

答案 1 :(得分:1)

ASP.NET核心应用程序解剖在此处asp.net core introduction进行了讨论。

回答您问题的一些重要文本如下教程:

  

ASP.NET Core应用程序只是一个控制台应用程序,可在其Main方法中创建Web服务器。 Main使用WebHostBuilder(遵循构建器模式)来创建Web应用程序主机。构建器具有定义Web服务器(例如UseKestrel)和启动类(UseStartup)的方法。在上面的示例中,使用了Kestrel Web服务器,但可以指定其他Web服务器。您可以在Startup类中定义请求处理管道以及配置应用程序所需的任何服务的位置。 Startup类必须是公共的,并包含以下方法:

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

    public void Configure(IApplicationBuilder app)
    {
    }
}

我想这可以帮助你理解asp.net核心如何处理Http请求。 感谢