美文网首页
【译】ASP.NET CORE 2.0 空项目

【译】ASP.NET CORE 2.0 空项目

作者: Dino | 来源:发表于2017-12-06 23:23 被阅读56次
Asp.net core 2.0

问题

创建一个不包含任何功能的空项目,即空壳。

解决方案

第一步用VisualStudio2017创建一个空的Asp.net core项目

  1. File>New>Project
  2. .Net Core -> Asp.net Core Web Application,填写文件夹位置和项目名称,点击OK
  3. 选择Empty,点击OK
    接下来从Program.cs 和 Startup.cs移出代码像下面的代码(保留必要的命名空间)
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }
 
        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup()
                .Build();
    }
 
    public class Startup
    {
        public Startup(
            IHostingEnvironment env,
            ILoggerFactory loggerFactory,
            IConfiguration config)
        {
 
        }
 
        public void ConfigureServices(
            IServiceCollection services)
        {
            // setup dependency injection in service container
        }
 
        public void Configure(
            IApplicationBuilder app,
            IHostingEnvironment env)
        {
            // setup request pipeline using middleware
        }
    }

讨论

在Visual Studio 2017中,用空项目模板创建一个项目包含Program.cs 和 Startup.cs两个类

Program.cs

就像控制台一样,public static void Main() 是Asp.net core的开始点
我们搭建一个Host 处理服务请求,Kestrel 使用CreateDefaultBuilder()来配置内容

  1. Kestrel: 跨平台服务宿主
  2. Root: 使用web项目根目录作为根内容目录
  3. IIS: 作为反向代理服务器
  4. Startup: 入口类,架起配置、服务和管道。
  5. Configuration: 添加 appsettings.json和环境变量到IConfiguration,见下文的依赖注入。
  6. Logging: 添加一个控制台和debug日志Providers。
    一旦配置完成,我们Build() 和 Run()程序指向主线程并阻塞,宿主开始监听服务请求。

当设置WebHostBuilder时,你可以通过UseSetting()方法为various settings设置值
,它是一个键值对属性。这些属性包括
applicationName (string), contentRoot (string), detailedErrors (bool), environment (string), urls (semicolon separated list) 和 webroot (string). 其中的一些属性也可以通过扩展方法在WebHostBuilder上设置

Startup.cs

这个类设置 application 的依赖注入服务和管道给我们的应用程序,使用以下方法:

  1. ConfigureServices() : 添加服务到容器
  2. Configure(): 用中间件设置请求管道

在上面的代码中可以看到方法的参数

这些方法被依次调用,重要的一点是注意顺序,服务容器注册之后才可以跑起来。

project 文件

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.3" />
  </ItemGroup>

</Project>

appsettings.json

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:62464/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Empty": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:62465/"
    }
  }
}

Source Code

GitHub:

https://github.com/TahirNaushad/Fiver.Asp.Empty

相关文章

网友评论

      本文标题:【译】ASP.NET CORE 2.0 空项目

      本文链接:https://www.haomeiwen.com/subject/achcixtx.html