NET CORE 2.0,ANGULAR 4和MYSQL的第2部分

.NET Core配置与标准差别很大。NET项目。我们不再有web.config文件,而是使用随附的内置配置框架。NET核心。

因此,了解如何配置项目以及如何配置服务(您将在开发过程结束之前使用这些服务)是必须的。

在这篇文章中,我将向您解释如何使用Startup类中的配置方法。此外,您将学习 如何注册不同的服务以及如何使用扩展方法来帮助您实现这一点。

创建一个新项目并修改LAUNCHSETTINGS.JSON文件

在我们完成创建和填充数据库之后, 在上一篇文章中,我们将为应用程序的服务器部分创建一个Visual Studio项目。打开Visual Studio 2017并使用名称AccountOwnerServer创建一个新的ASP.NET Core Web应用程序。

在下一个窗口中选择Web API,然后从左侧的下拉列表中选择。NET核心。另外,从右侧的下拉列表中选择ASP.NET Core 2.0。毕竟,只需点击确定按钮,项目就会加载。

项目创建完成后,我们将修改 launchSettings.json文件。让我们将applicationUrl属性和 launchBrowser属性更改为false,以防止在项目启动时启动Web浏览器。

在解决方案资源管理器中展开属性并双击launchSettings.json文件。像这样修改它:

{

"iisSettings": {

"windowsAuthentication": false,

"anonymousAuthentication": true,

"iisExpress": {

"applicationUrl": "http://localhost:5000/",

"sslPort": 0

}

},

"profiles": {

"IIS Express": {

"commandName": "IISExpress",

"launchBrowser": false,

"environmentVariables": {

"ASPNETCORE_ENVIRONMENT": "Development"

}

},

"AccountOwner_Server": {

"commandName": "Project",

"launchBrowser": false,

"environmentVariables": {

"ASPNETCORE_ENVIRONMENT": "Development"

},

"applicationUrl": "http://localhost:5000/"

}

}

}

PROGRAM.CS和STARTUP.CS解释

在Program.cs中你会找到这段代码:

public static void Main(string[] args)

{

BuildWebHost(args).Run();

}

public static IWebHost BuildWebHost(string[] args) =>

WebHost.CreateDefaultBuilder(args)

.UseStartup()

.Build();

如果你熟悉的话.NET Core 1.0,你会发现这个代码比以前小得多。此外,你可能会认为许多零件都像UseKestrel()或 UseIISIntegration()一样丢失 ......但这不是情况。方法CreateDefaultBuilder(args)将所有内容封装起来,使得这段代码更具可读性并且 更小,但仍然保留了所有的魔法。

你也可以注意到这部分代码:UseStartup ()。启动类对于.NET Core来说是强制性的,我们在其中配置我们的应用程序需要的嵌入式或自定义服务。当你打开启动类时,你可以看到构造函数和两个方法,我们将在应用程序开发期间更改哪些内容。在ConfigureServices方法中,您 将完成这一步,配置您的服务。此外,在配置方法中,您将添加不同的中间件组件到应用程序的请求管道。

我们所有的配置代码都可以写在ConfigureServices方法中,但是大型应用程序可能包含很多服务。因此,它可能使这种方法难以阅读并且难以维护。因此,我们将为每个配置创建扩展方法,并将配置代码放入这些方法中。

扩展方法和CORS配置

扩展方法本质上是静态方法。与其他静态方法不同的是,它接受“this”作为第一个参数,“this”表示使用该扩展方法的对象的数据类型。扩展方法必须位于静态类中。这种方法扩展了类型的行为。净。

所以,我们开始编写一些代码。

在项目中创建新文件夹“Extensions”,并在该文件夹内创建一个名为ServiceExtensions的新类。我们将使该类成为静态类,并在该类中添加我们的服务扩展方法。

namespace AccountOwnerServer.Extensions

{

public static class ServiceExtensions

{

}

}

首先,我们需要在我们的应用程序中配置CORS。CORS(跨源资源共享)是一种为用户提供权限访问不同域上的服务器资源的机制。因为我们将使用Angular作为与服务器域不同的域上的客户端,因此配置CORS是强制性的。因此,将此代码添加到 ServiceExtensions类中:

public static void ConfigureCors(this IServiceCollection services)

{

services.AddCors(options =>

{

options.AddPolicy("CorsPolicy",

builder => builder.AllowAnyOrigin()

.AllowAnyMethod()

.AllowAnyHeader()

.AllowCredentials());

});

}

IIS配置

此外,您需要配置IIS集成,这将有助于我们进行IIS部署。将以下代码添加 到 ServiceExtensions类中:

public static void ConfigureIISIntegration(this IServiceCollection services)

{

services.Configure(options =>

{

});

}

我们不初始化选项内的任何属性,因为我们对默认值没问题。有关这些属性的更多信息,请看下面的图片。

在Startup类中,我们将更改ConfigureServices和Configure方法,如下所示:

public void ConfigureServices(IServiceCollection services)

{

services.ConfigureCors();

services.ConfigureIISIntegration();

services.AddMvc();

}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

if (env.IsDevelopment())

{

app.UseDeveloperExceptionPage();

}

app.UseCors("CorsPolicy")

app.UseForwardedHeaders(new ForwardedHeadersOptions

{

ForwardedHeaders = ForwardedHeaders.All

});

app.Use(async (context, next) =>

{

await next();

if (context.Response.StatusCode == 404

&& !Path.HasExtension(context.Request.Path.Value))

{

context.Request.Path = "/index.html";

await next();

}

});

app.UseStaticFiles();

app.UseMvc();

}

在 ConfigureServices方法中,添加了CORS和IIS配置。此外,CORS配置已添加到Configuration方法内的应用程序管道中 。但正如你可能会注意到的,还有更多的代码。因此,我现在将解释它。

app.UseForwardedHeaders会将代理标头转发到当前请求。这将在Linux部署期间帮助我们。

app.Use(async(context,next)=> ...将指向Angular项目的索引页面。

app.UseStaticFiles()启用请求的静态文件。如果我们没有为静态文件设置路径,默认情况下,它将在我们的解决方案资源管理器中使用wwwroot文件夹。

结论

这就是本教程的第2部分。现在您知道如何修改launchSetting.json文件,Program和Startup类的用途,如何配置服务以及如何创建和使用扩展方法。

感谢您阅读和检查下一部分,我们将在其中创建我们的第一个服务,记录器服务,并将其用于记录我们的消息。

对于任何其他问题,请不要犹豫,通过在下面的部分留下评论问。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180223A0KG3900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券