• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > asp.net core中灵活的配置方式详解

asp.net core中灵活的配置方式详解

作者:杜现鹏 字体:[增加 减小] 来源:互联网 时间:2018-08-20

杜现鹏 通过本文主要向大家介绍了asp.net,core配置文件,asp.net,core,配置,asp.net,core,教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

asp.net core支持外部文件和命令行参数方式来配置系统运行所需要的配置信息,我们从下面两个常用场景来具体说下具体使用方法。

一、监听地址及端口配置

1,命令行方式

asp.net core系统通过命令行方式启动,使用的命令如下:

dotnet run

上面的命令直接在源代码目录下执行,便可以编译程序并运行。那对于已经发布好的程序,就不能使用上面的指令了,应该使用下面的指令:

dotnet 程序集文件名(程序集文件名就是程序发布后生成的dll文件)

上面两个指令都能够启动应用程序。程序启动后,默认监听地址及端口是http://localhost:5000。但是程序发布后,肯定不会使用默认的地址及端口,那如果要想让启动时监听其他的地址或域名怎么办?答案是使用--urls参数,具体指令格式如下:

dotnet run --urls="http://域名:端口号"

如果想设置多个域名,可以使用分号分隔。

程序默认情况下是不支持参数传递的,我们需要对程序进行一些配置。首先需要引入Microsoft.Extensions.Configuration.CommandLine库文件,然后在main方法中添加commandline支持,具体代码如下:

public class Program

 {

  public static void Main(string[] args)

  {

   var config = new ConfigurationBuilder()

   .AddCommandLine(args)//增加commandline支持

   .Build();

 

   var host = new WebHostBuilder()

    .UseConfiguration(config)

    .UseKestrel()

    .UseContentRoot(Directory.GetCurrentDirectory())

    .UseIISIntegration()

    .UseStartup<Startup>()

    .UseApplicationInsights()

    .Build();

 

   host.Run();

  }

 } 

经过配置后就可以使用上面的指令传递参数了

2,配置文件

asp.net core配置信息也可以放置在一个配置文件中,系统启动时进行加载配置文件内容,来影响程序启动所需要的环境参数。我们来看一下具体操作过程。

首先我们需要引入一个库文件"Microsoft.Extensions.Configuration.Json",然后在main方法中引入配置文件路径信息,具体代码如下:

public class Program

{

 public static void Main(string[] args)

 {

  var config = new ConfigurationBuilder()

   .SetBasePath(Directory.GetCurrentDirectory())

   .AddJsonFile("hosting.json")

   .Build();

 

  var host = new WebHostBuilder()

   .UseConfiguration(config)

   .UseKestrel()

   .UseContentRoot(Directory.GetCurrentDirectory())

   .UseIISIntegration()

   .UseStartup<Startup>()

   .UseApplicationInsights()

   .Build();

 

  host.Run();

 }

} 

 通过上面方式,我们就增加了一个外部的hosting.json配置文件,在里面我们可以增加监听地址信息,内容如下:

{

 "server.urls": "http://*:5001"

} 

二、运行环境配置

在进行项目开发时,常常要求开发环境,测试环境及正式环境的分离,并且不同环境运行的参数都是不一样的,比如监听地址,数据库连接信息等。当然我们把配置信息保存到一个文件中,每次发布的时候,可以先修改配置文件的内容,然后再进行程序发布,这样操作起来无疑是很麻烦,每次发布都得先确定对应的环境,然后修改配置信息,如果需要同时发布多个环境版本,那就得进行多次操作。

asp.net core 其实已经考虑到了这样的场景,我们可以先看下下面的代码:

public Startup(IHostingEnvironment env)

  {

   var builder = new ConfigurationBuilder()

    .SetBasePath(env.ContentRootPath)

    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)

    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)

    .AddEnvironmentVariables();

   Configuration = builder.Build();

  } 

上面的代码是出现在startup.cs文件中,里面首先使用AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)加载appsettings配置文件,这个文件里可以放置所有环境共享的信息,后面有一句AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true),env.EnvironmentName其实就是系统环境,根据启动时设置的EnvironmentName不同,可以加载对应的配置文件内容。

现在的问题是如何去指定这个EnvironmentName?

1,通过命令行指定environment

在执行dotnet run之前,可以先执行以下下面的指令:

set ASPNETCORE_ENVIRONMENT= 环境名称,注意这里没有引号,直接把环境名称写成具体的值即可,比如 set ASPNETCORE_ENVIRONMNET=development

然后再执行dotnet run指令,这样当前运行就会按照set指令中设置的环境进行运行

2,直接给dotnet run指令传递具体参数

先看直接的执行效果:dotnet run --ASPNETCORE_ENVIRONMENT=development

具体做法:引入Microsoft.Extensions.Configuration.CommandLine,Microsoft.Extensions.Configuration.EnvironmentVariables库文件,然后在main方法中增加环境参数的支持,具体代码如下:

public class Program

{

 public static void Main(string[] args)

 {

  var config = new ConfigurationBuilder()

   .AddEnvironmentVariables()

   .AddCommandLine(args)

   .SetBasePath(Directory.GetCurrentDirectory())

   .AddJsonFile("hosting.json")

   .Build();

 

  var host = new WebHostBuilder()

   .UseEnvironment(config["ASPNETCORE_ENVIRONMENT"])

   .UseConfiguration(config)

   .UseKestrel()

   .UseContentRoot(Directory.GetCurrentDirectory())

   .UseIISIntegration()

   .UseStartup<Startup>()

   .UseApplicationInsights()

   .Build();

 

  host.Run();

 }

} 

关键是AddEnvironmentVariables(),UseEnvironment(config["ASPNETCORE_ENVIRONMENT"])两处的处理。这样我们就可以在dotnet run指令后面增加对应的环境参数。 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对的支持。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Asp.net SignalR 应用并实现群聊功能 开源代码
  • asp.net动态更新
  • asp.net利用母版制作页脚效果
  • Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决
  • 使用asp.net mvc,boostrap及knockout.js开发微信自定义菜单编辑工具(推荐)
  • 详解ASP.NET MVC 常用扩展点:过滤器、模型绑定
  • ASP.NET Core发送邮件的方法
  • 在ASP.NET Core 中发送邮件的实现方法(必看篇)
  • ASP.NET MVC从视图传参到控制器的几种形式
  • Asp.net core WebApi 使用Swagger生成帮助页实例

相关文章

  • 2017-05-11asp.net treeview checkbox 相关问题
  • 2018-08-20asp.net core 实现一个简单的仓储的方法
  • 2018-08-20.NET开发实现一个微信跳一跳的辅助程序
  • 2017-05-11asp.net实现调用带有输出参数的存储过程实例
  • 2017-05-11.NET工厂方法模式讲解
  • 2017-05-11ASP.NET MVC图片上传前预览简单实现
  • 2017-05-11aspx实现的 jquery ui 的 flexgrid demo
  • 2017-05-11GridView自定义分页实例详解(附demo源码下载)
  • 2017-05-11使用asp.net调用谷歌地图api示例
  • 2017-05-11Ajax+asp.net智能匹配检索(含图含完整代码)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net的加密解密技巧
    • ASP.NET MVC的Localization本地化多语言支持
    • C# SetCursorPos简介及使用说明
    • C# OWC生成图表
    • ASP.NET 站点地图(sitemap)简明教程
    • asp.net 备份和恢复数据库的方法示例
    • .net SMTP发送Email邮件且可带附件示例
    • asp.net SqlHelper数据访问层的使用
    • IIS应用池回收造成Application_Start中定时执行程序停止的问题的解决方法
    • ASP.NET动态生成静态页面的实例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有