📅  最后修改于: 2020-11-21 04:52:29             🧑  作者: Mango
在本章中,我们将讨论与ASP.NET Core项目相关的配置。在解决方案资源管理器中,您将看到Startup.cs文件。如果您使用过早期版本的ASP.NET Core,则可能希望看到一个global.asax文件,该文件是您可以在Web应用程序启动期间编写代码以执行的地方。
您还将期望看到一个web.config文件,其中包含应用程序执行所需的所有配置参数。
在ASP.NET Core中,这些文件全部消失了,而不是从Startup.cs加载配置和启动代码。
文件中有一个Startup类,在该类中,您可以配置应用程序,甚至可以配置配置源。
这是Startup.cs文件中的默认实现。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace FirstAppDemo {
public class Startup {
// This method gets called by the runtime.
// Use this method to add services to the container.
// For more information on how to configure your application,
// visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services) {
}
// This method gets called by the runtime. Use this method to configure
// the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory) {
loggerFactory.AddConsole();
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
}
app.Run(async (context) => {
await context.Response.WriteAsync("Hello World!");
});
}
}
}
在Startup类中,有两种方法将完成我们的大部分工作。该类的Configure方法是构建HTTP处理管道的位置。
这定义了您的应用程序如何响应请求。目前,该应用只能说Hello World!如果我们希望应用程序的行为有所不同,则需要在此Configure方法中添加其他代码来更改管道。
例如,如果我们要提供诸如index.html文件之类的静态文件,则需要向Configure方法中添加一些代码。
您还可以显示错误页面或将请求路由到ASP.NET MVC控制器;这两种情况都将需要在此Configure方法中做一些工作。
在Startup类中,您还将看到ConfigureServices()方法。这有助于您为应用程序配置组件。
现在,对于每个响应,我们都有一个硬编码的字符串-Hello World !字符串。我们不是要对字符串进行硬编码,而是要从某个知道要显示的文本的组件中加载此字符串。
这个其他组件可能会从数据库,Web服务或JSON文件中加载该文本,无论其确切位置如何。
我们将只设置一个方案,以便没有这个硬编码的字符串。
在解决方案资源管理器中,右键单击您的项目节点,然后选择添加→新建项目。
在左窗格中,选择Installed→Code ,然后在中间窗格中,选择JSON File。将该文件命名为AppSettings.json ,然后单击“添加”按钮,如上面的屏幕截图所示。
我们也可以让我们的程序从文件中读取文本,而不是使用Hello World! Startup.cs中的字符串。让我们在AppSettings.json文件中添加以下代码。
{
"message": "Hello, World! this message is from configuration file..."
}
现在,我们需要从Startup.cs文件访问此消息。这是Startup.cs文件的实现,该文件将从JSON文件读取以上消息。
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
namespace FirstAppDemo {
public class Startup {
public Startup() {
var builder = new ConfigurationBuilder()
.AddJsonFile("AppSettings.json");
Configuration = builder.Build();
}
public IConfiguration Configuration { get; set; }
// This method gets called by the runtime.
// Use this method to add services to the container.
// For more information on how to configure your application,
// visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services) {
}
// This method gets called by the runtime.
// Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app) {
app.UseIISPlatformHandler();
app.Run(async (context) => {
var msg = Configuration["message"];
await context.Response.WriteAsync(msg);
});
}
// Entry point for the application.
public static void Main(string[] args) =7gt; WebApplication.Run(args);
}
}
现在让我们运行该应用程序。一旦运行该应用程序,它将产生以下输出。