对C#中“上下文”的用法和含义感到困惑

时间:2019-06-04 22:34:46

标签: c# asp.net asp.net-mvc asp.net-core

我是一名刚毕业的实习生,刚完成我的大学一年级。我花了两个介绍来编写sci类,并且对Java有相当扎实的基础知识,但也有基本的OOP语言思想。我以前从未使用过C#,而我的实习要求。我的任务一直是启动一个执行一些基本任务的MVC应用程序,但是在这种情况下,我对“上下文”的用法感到困惑。我将Microsoft Virtual Studio与ASP.NET MVC空白模板一起使用。这是我找到要使用的“上下文”的地方。我主要对如何或为什么在此方法中使用它感到困惑。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.Use

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
    }

1 个答案:

答案 0 :(得分:1)

此代码

app.Run(async (context) =>
    {
        await context.Response.WriteAsync("Hello World!");
    });

告诉ASP.NET Core“运行”中间件。在给定HttpContext的情况下,运行中间件意味着读取请求并写入结果-而不是“使用”中间件,这意味着中间件可能会执行或可能将执行推迟到链中的下一个中间件。这特定于ASP.NET Core,而不是C#。

app.Run()方法需要一个采用单个HttpContext参数的异步函数形式的委托。 lamda表达式(context)=> { }是具有单个参数context的匿名函数的简写。 C#编译器根据预期的原型识别context的类型。您可以这样编写代码:

app.Run(helloWorldHandler);
...

private async Task helloWorldHandler(HttpContext context) {
   await context.Response.WriteAsync("Hello World!");
}