如果要把一个相对路径或者虚拟路径映射道服务器的物理路径,通常会使用Server.MapPath()函数,比如将根目录下的html目录映射为物理路径:Server.MapPath("html"),可以返回形如"E:\www\htm\"的字符串。通常情况下我们都不会遇到什么问题。

新手常常会发现在诸如自己的类文件中无法使用Server.MapPath(),这是由于没有引入相应的命名空间,只要把全名写出来,即用System.Web.HttpContext.Current.Server.MapPath(),问题就迎刃而解了。

最近老板让我做一个可以定时发布文章的CMS,他的意思是做一个网站,但是他不想管理这个网站,只是想一个月来管一次,但是又要保持网站每天更新(真是够懒的,想得还真美)。就是说网站每天会自己更新,多么好的网站啊。这里面我首先想到的是使用定时器,但是web程序是相当被动的,只有当用户请求时,它才会工作,这个问题困扰了我很久。

不过还好,几经周折才找到可以在global.asax中实现这种功能,该文件是一个网站应用程序可选的全局文件,定义了有很多事件,其中的Application_Start()函数可以在整个网站应用程序启动时被触发,因此我就在这里触发一个定时器,通过这个定时器不断触发我的定时发发布函数。

定时发布功能我做到了一个类里面,类里面用到了Server.MapPath(),但是这个类真的好奇怪,我在其他地方调用时都可以工作正常,但是在global.asax中调用是老是在MapPath()一行提示“未将对象引用设置到对象的实例”的错误。弄了N久也没有结果,郁闷至极,上网搜了N久,又到百度知道中花了200分悬赏也没有得到答案,千篇一律的给出使用Server.MapPath(),而这是根本不行的。

经过钻研,发现原来在global.axax中并没有请求上下文,因此System.Web.HttpContext是Null,更不要说使用其成员了,所以这条路是走不通了。难道就没有其他获取物理路径的方法了吗?又是一番周折,我发现了HttpRuntime这个神奇的类,它并不需要请求上下文,而它恰好有一个熟悉AppDomainAppPath,给出了当前应用程序的根目录,有了这个东西,加上我已知的虚拟路径不久得到了我相应的文件的物理路径了吗。试了一下,果然实现了,呵呵,一个困难又被我解决了。

总结一下:如果没有请求上下文System.Web.HttpContext就是空值,自然不能实现任何功能。如果想在这种情况下得到物理路径可以使用HttpRuntime.AppDomainAppPath获取应用程序的物理根目录,有了这个根目录就可以获取所有文件的物理路径了。

定时发布任务,在global.asax中获取文件的物理路径的方法相关推荐

  1. python获取绝对路径_python3中获取文件当前绝对路径的两种方法

    方法1: import sys print(sys.argv) 得到文件当前绝对路径字符串的一个列表 ['D:/pycharm/PracticeProject/ClientServerNetworki ...

  2. bat获取文件名称和路径的方法

    在文件夹下新建一个txt文件 在txt文件里写入:dir/s/b > 1.txt [若指定文件类型,如pkl文件,则写入:dir *.pkl/s/b > 1.txt 把这个txt文件另存为 ...

  3. Net Core api 中获取应用程序物理路径wwwroot

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...

  4. html 读取物理路径,.Net Core api 中获取应用程序物理路径wwwroot

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: //Classic ...

  5. ASPNET Core api 中获取应用程序物理路径wwwroot

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...

  6. 从注册表中获取文件的安装路径

    从注册表中取值(Windows平台) 本篇文章的内容是从Windows平台的注册表里取值 程序开发一般都会涉及从注册表获取相关信息,我将以从注册表获取软件的安装路径为例子 一.需求 我现在要获取微信的 ...

  7. vue中input获取文件路径_JS获取input file绝对路径的方法(推荐)

    最近因需要上传文件到oracle blob里, 在获取文件路径的遇到些问题,由于安全原因,新版的浏览器都不支持直接获取本地URL,在网上找了些方法,如下: //FX获取文件路径方法 function ...

  8. php获取input file路径,JavaScript_JS获取input file绝对路径的方法(推荐),最近因需要上传文件到oracle blo - phpStudy...

    JS获取input file绝对路径的方法(推荐) 最近因需要上传文件到oracle blob里, 在获取文件路径的遇到些问题,由于安全原因,新版的浏览器都不支持直接获取本地URL,在网上找了些方法, ...

  9. 如何获取文件的完整路径?

    有没有一种简单的方法可以打印file.txt的完整路径? file.txt = /nfs/an/disks/jj/home/dir/file.txt <command> dir> & ...

最新文章

  1. 深度学习项目代码阅读建议
  2. 将来自另一个分支的所有更改合并为单个提交
  3. 零基础学python看什么书-转行零基础该如何学习python?很庆幸,三年前的我选对了...
  4. win10环境变量设置_win10配置anaconda环境变量
  5. mysql linux 还原_linux下java还原mysql数据库
  6. 阿里云 ecs mysql搭建_使用ECS和mysql搭建mysql服务器-阿里云开发者社区
  7. jqGrid获取数据库数据的方式
  8. Android注解编程的第一步---模仿ButterKnife的ViewBinder机制
  9. 13.MongoDB之Gridfs
  10. C语言实现日期转换小工具
  11. 全国大学生数学建模竞赛2018A题高温作业专用服装设计MATLAB程序
  12. ECshop仿顺丰优选综合购物商城平台源码旗舰版+团购+触屏版+微信支付
  13. 操作实例:创建自定义 Windows PE 映像
  14. 淦ORB-SLAM2源码 09--SIM(3)算法
  15. git bash 下backspace键无法使用的问题
  16. 阿里P6级别Java程序员月薪多少?阿里认证员工给出答案
  17. 目标检测xml文件提取
  18. Windows日常使用快捷方式
  19. 【教程】ESP32连接华为云IoT平台
  20. 数据库操作之导入导出dmp

热门文章

  1. C++xor cipher异或密码算法(附完整源码)
  2. java关于包的叙述_Java中构造方法,包的引用,final,super等词的概括
  3. ztree和php结合实例,实例详解jQuery EasyUI结合zTree树形结构制作web页面
  4. 26.27.28.29.极区图(南丁格尔玫瑰图)、维恩图 (Venn diagram)、面状图(Area chart)、树地图
  5. Sqoop导入导出的时候总是出现等待5分钟的问题解决办法
  6. overridePendingTransition的简介
  7. 清单文件,测试,打电话和发短信应用
  8. c语言ssl通信,利用 OpenSSL 的 C/S 安全通信程序设计
  9. scale html 浏览器,javascript中scale怎么使用?
  10. 有关机器人的会议和论文投稿时间