首先创建一个空的ASP.NET Core Web应用程序。第一个应用程序是一个简单的主机,它只响应来自主机的请求。从一个新的ASP.NET Core Web应用程序开始,并选择空模板(参见下图)。但是对于第一个示例,空模板空得还不够。从模板中删除Startup.cx文件和wwwroot目录。
Main()方法简化为调用WebHost类的Start()方法。此方法具有RequestDelegate参数。RequestDelegate是一个委托,把HttpContext接收为参数并返回一个Task。可以使用HttpContext从客户端读取请求并发送返回的内容。使用示例代码,返回包含HTML字符串的响应:
public class Program
{
public static void Main(string[] args)
{
WebHost.Start(async context=>
{
await context.Response.WriteAsync("<h1>A Simple Host!</h1>");
}).WaitForShutdown();
}
}
运行应用程序时,可以在浏览器中看到HTML内容。
使用ASP.NET Core 创建Web主机非常简单,但是现在进入一个更复杂的场景来看看这些特性。下一个应用程序名为WebSampleApp,使用相同的Empty模板创建。
创建项目之后,会得到一个名为WebSampleApp的解决方案和一个项目文件,其中包括一些文件和文件夹。
在项目结构中,有一个ependencies文件夹。其中的NuGet子文件夹包含NuGet包。在ASP.NET Core,包列表已经简化,只能看到Microsoft.AspNetCore.All引用包。这是一个包含大量ASP.NET Core包的引用包。这是一个包含大量ASP.NET Core包的引用包。在Solution Explorer中打开Microsoft.AspNetCore.All时引用的包列表。
在项目文件中,还可以看到对这个包的引用。项目文件列出了项目SDK(软件开发工具包)和Microsoft.NET.Sdk.Web。这利用了安装在系统上的SDK。这个条目不同于控制台应用程序,其中SDK是Microsoft.NET.Sdk。在Web SDK中,可以使用其他Web开发工具:
在Project设置中使用Debug选项,可以配置提供Visual Studio开发时使用的Web服务器(参见下图)。在默认情况下,IIS Express配置为使用Debug设置指定的端口号。IIS Express源自Internet Information Server(IIS),提供了IIS的所有核心特性。所以非常易于在于稍后托管应用程序的环境(如果IIS用于托管)几乎相同的环境中开发Web应用程序。
要使用Kestrel服务器运行应用程序,可以使用Debug Project设置选择项目名称的概要文件。使用Visual Studio项目设置更改的设置将影响launchSettings.json文件的配置。通过这个文件,可以定义一些附加的配置,比如命令行参数:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:30963",
"sslPort": 44