当前位置: 首页 > news >正文

再见了Server对象,拥抱IHostingEnvironment服务对象(.net core)

一、绝对路径

1、获取应用程序运行当前目录Directory.GetCurrentDirectory()。

System.IO命名空间中存在Directory类,提供了获取应用程序运行当前目录的静态方法GetCurrentDirectory,

但根据.net core的设计,此方法不是真正的获取应用程序的当前方法,而是执行dotnet命令所在目录,

var path =  Directory.GetCurrentDirectory()

执行结果:

E:\project\24-dingding-saas\Code\DBen.Ding.SaaS.WebMobile

要获取应用程序运行当前目录,只能通过变通的方案解决。

如:1、在应用程序的目录执行dotnet命令,

  2、或者通过其他方案。

如下代码是一种可以获取应用程序的当前目录:

 dynamic type = (new Program()).GetType();
 string currentDirectory = Path.GetDirectoryName(type.Assembly.Location);
 Console.WriteLine(currentDirectory);

执行结果:

E:\project\24-dingding-saas\Code\DBen.Ding.SaaS.WebMobile\bin\Debug\netcoreapp2.0\DBen.Ding.SaaS.WebMobile.dll
回到顶部

二、相对路径

从ASP.NET Core RC2开始,可以通过注入 IHostingEnvironment 服务对象来取得Web根目录和内容根目录的物理路径,如下所示:

复制代码
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;

namespace AspNetCorePathMapping
{
    public class HomeController : Controller
    {
        private readonly IHostingEnvironment _hostingEnvironment;

        public HomeController(IHostingEnvironment hostingEnvironment)
        {
            _hostingEnvironment = hostingEnvironment;
        }

        public ActionResult Index()
        {
            string webRootPath = _hostingEnvironment.WebRootPath;
            string contentRootPath = _hostingEnvironment.ContentRootPath;

            return Content(webRootPath + "\n" + contentRootPath);
        }
    }
}
复制代码

执行结果:

/Code/DBen.Ding.SaaS.WebMobile/wwwroot
/Code/DBen.Ding.SaaS.WebMobile

转载于:https://www.cnblogs.com/ZaraNet/p/9949496.html

相关文章:

  • Sublime Text在Ubuntu下无法输入中文的解决方案
  • Oracle11g RAC下ASM 的管理与维护
  • 零基础入门微信小程序开发
  • oracle--数据筛选
  • Flutter widgets——Text/Icon/Button
  • window 环境 spring boot 发布脚本整理
  • The POM for XXX is invalid, transitive dependencies (if any) will not be available解决方案
  • spring第一冲刺阶段第四天
  • 福大软工1816 · 团队现场编程实战(抽奖系统)
  • Servlet重写init(ServletConfig config)还是init()
  • 微信小程序填坑清单
  • 【.NET Core项目实战-统一认证平台】第五章 网关篇-自定义缓存Redis
  • WPF自定义Window窗体样式
  • python编程入门----while与文件用法
  • [洛谷P3950]部落冲突
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • flutter的key在widget list的作用以及必要性
  • js
  • leetcode388. Longest Absolute File Path
  • Mac转Windows的拯救指南
  • Spring声明式事务管理之一:五大属性分析
  • supervisor 永不挂掉的进程 安装以及使用
  • vue总结
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 三栏布局总结
  • 设计模式走一遍---观察者模式
  • 我从编程教室毕业
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​马来语翻译中文去哪比较好?
  • ​如何在iOS手机上查看应用日志
  • "无招胜有招"nbsp;史上最全的互…
  • #if 1...#endif
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #大学#套接字
  • $L^p$ 调和函数恒为零
  • (09)Hive——CTE 公共表达式
  • (2015)JS ES6 必知的十个 特性
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (TOJ2804)Even? Odd?
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (推荐)叮当——中文语音对话机器人
  • (转)德国人的记事本
  • (转载)深入super,看Python如何解决钻石继承难题
  • .a文件和.so文件
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET Project Open Day(2011.11.13)
  • .NET 解决重复提交问题
  • .NET中两种OCR方式对比
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?