.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类的用途,如何配置服务以及如何创建和使用扩展方法。
感谢您阅读和检查下一部分,我们将在其中创建我们的第一个服务,记录器服务,并将其用于记录我们的消息。
对于任何其他问题,请不要犹豫,通过在下面的部分留下评论问。
领取专属 10元无门槛券
私享最新 技术干货