Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASPNET CORE如何启动以侦听httprequest?_C# - Fatal编程技术网

C# ASPNET CORE如何启动以侦听httprequest?

C# ASPNET CORE如何启动以侦听httprequest?,c#,C#,好的,我现在正在学习aspnet core,我无法理解应用程序何时启动其服务器(如IIS或KestrelServer),以及服务器如何侦听httprequest并将请求转发给应用程序。有人能帮我吗?谢谢好吧,让我们从头开始(因为我不知道你对C#的了解) 每个C#应用程序必须包含一个指定程序执行开始位置的主方法,因此,默认情况下,模板有一个类program,您可以在其中设置要使用的Web服务器类型,并告诉服务器开始侦听HTTP请求,例如: public static void Main(strin

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

好吧,让我们从头开始(因为我不知道你对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();
}
publicstaticvoidmain(字符串[]args)
{
var config=new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
var host=new WebHostBuilder()
.UseKestrel()
.UseConfiguration(配置)
.UseStartup()
.Build();
host.Run();
}
在AspNetCore中,甚至在AspNet(MVC或WebApi)中,您可以(也应该)使用OWIN(又名Katana或vNext,分别是Microsoft针对AspNet和AspNetCore的OWIN实现)

OWIN代表一个接口(只是一个规范),它告诉Web服务器应该如何与Web应用程序通信。通常,它将Http请求处理到一个可以插入中间件的管道,如身份验证/授权、日志、错误处理等,在管道的最后,您应该插入Web应用程序

在AspNetCore中,您可以通过在主机配置中使用
UseStartup
来设置中间件管道。请参阅上面的
Main
方法,该方法非常简单,因为您的管道将处理每个HttpRequest

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


这只是一个简单的概述,您可以在这些技术的文档中了解更多信息。只需搜索像Katana、vNext、OWIN、OWIN中间件、OWIN管道这样的标记…

ASP.NET核心应用程序剖析在这里讨论

回答您问题的一些重要文本如下所示:

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

我想这将帮助您理解asp.net核心如何处理Http请求。
谢谢

您尝试过搜索它吗?如果是的话,你能分享你的发现吗?我试图查看他的来源,但我没有find@oldman如果此答案有用,请将您的问题标记为已解决;)
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IApplicationBuilder app)
    {
    }
}