所以你们都听到了#Build 2017的消息,Mac上的Visual Studio已经被完全发布,是一般的。为了庆祝这个版本,我将在我的Mac上写几篇关于构建一些不同的.net应用的帖子。
正如你已经期望的标题,本文将在ASP.NET核心我将使它简短而简单。
我将建立的虚拟应用程序将在电影上。以下是创建新项目并选择ASP.NET Core Empty时的外观。
在选择名称并创建项目之后,Visual Studio只是为您提供了一个简单的网络项目,其中一些nugets正在恢复,在第一次运行时,正如预期的那样,您将在默认浏览器中获得一个旧的漂亮Hello World。
现在让我们探索模板,并了解我们可以免费获得这个Empty模板并开始构建我们的应用程序。
如上图所示,我们为我们生成了两个文件Program.cs和Startup.cs以及Movies.csproj本身,其中包含相关信息,以告诉Visual Studio该应用程序的功能。
现在来看看Program.cs文件
这个文件实际上有一个Main方法,我们在Web项目中没有看到一段时间,ASP.NET Core应用程序需要一个主机来运行。该主机实现IWebHost接口,暴露了启动主机所需的功能和服务。
上面的行首先创建了WebHostBuilder的一个实例,一个构建和配置主机的类帮助器,首先配置说明是UseKestrel实际上告诉主机使用Kestrel服务器,下一个配置UseContentRoot是告诉主机应该在哪里找到内容您可以看到文件以当前目录作为参数。UseIISIntegration,另一方面加入支持IIS / IIS快速集成和用来指定一个反向代理由红隼进行内部服务器。UseStartup告诉主机如何配置中间件和服务,并且您可以看到这是两个文件之间的链接,它告诉主机在另一个文件中使用启动类的实例。最后,它构建此主机并返回为此角色配置的实例。
下一行host.Run() 是实际运行Web应用程序并阻止调用线程的主机,直到主机关闭。还有一个替代的非阻塞方法host.Start()。
下一个文件Startup.cs是将要使用的实际ASP.NET配置,我们将在随后的帖子和主题中重新访问此文件。
在这个文件中没有什么可以描述的,它很简单(到目前为止)。其中一个方法被声明为添加服务。另一个用于初始配置。
正如你可以看到依赖注入是内置在.NET Core和本机支持的,如果你注意到using语句,你将Microsoft.Extensions.DependencyInjection来处理它。因此,所有的参数值将设在幕后运行时绑定,所有你需要做的就是要求实现的目标IApplicationBuilder,或IHostingEnvironment甚至是ILoggerFactory,你会得到你用一个具体的实施; 当我们探索更多并深入ASP.NET Core时,还有更多的这些来到这里。
该方法中的第一行添加了一个控制台记录器,如果使用Kestrel运行Windows,则您将始终获得一个“命令”窗口,您可以在网页上执行某些操作时查看日志跟踪。在Mac上使用Visual Studio时,这个记录器将被嵌入应用程序输出窗口中。
一个关于ASP.NET Core的intersting的事情,它只是一个核心任何服务,你需要添加或配置,你必须要求它!即使是旧的异常页面(黄色屏幕死亡),现在是一个可爱的淡蓝色屏幕的死亡告诉你什么发生错误,也不是我们只告诉应用程序生成器添加这个DeveloperExceptionPage只在Developement环境中,这是一个很好的实践中,因为您不想在生产中暴露内部代码异常,您可能希望构建自定义的500错误页面。添加此开发人员异常页面实际上是在管道中添加了一个“中间件”,这是一个很快会谈到的主题。
最后一行是管道命令的终止中间件,它侦听来自此服务器的请求。它需要一个委托(处理程序)参数,并且您可以看到这是我们获得“Hello World”的地方,我们只需将纯文本写入当前上下文的Repsonse。
这是所有的这个帖子,非常基本的没有代码实际上是写的,但我相信这个帖子是一个插入ASP.NET核心和初学者即将发布的帖子。