定时发布任务,在global.asax中获取文件的物理路径的方法
如果要把一个相对路径或者虚拟路径映射道服务器的物理路径,通常会使用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中获取文件的物理路径的方法相关推荐
- python获取绝对路径_python3中获取文件当前绝对路径的两种方法
方法1: import sys print(sys.argv) 得到文件当前绝对路径字符串的一个列表 ['D:/pycharm/PracticeProject/ClientServerNetworki ...
- bat获取文件名称和路径的方法
在文件夹下新建一个txt文件 在txt文件里写入:dir/s/b > 1.txt [若指定文件类型,如pkl文件,则写入:dir *.pkl/s/b > 1.txt 把这个txt文件另存为 ...
- Net Core api 中获取应用程序物理路径wwwroot
如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...
- html 读取物理路径,.Net Core api 中获取应用程序物理路径wwwroot
如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: //Classic ...
- ASPNET Core api 中获取应用程序物理路径wwwroot
如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...
- 从注册表中获取文件的安装路径
从注册表中取值(Windows平台) 本篇文章的内容是从Windows平台的注册表里取值 程序开发一般都会涉及从注册表获取相关信息,我将以从注册表获取软件的安装路径为例子 一.需求 我现在要获取微信的 ...
- vue中input获取文件路径_JS获取input file绝对路径的方法(推荐)
最近因需要上传文件到oracle blob里, 在获取文件路径的遇到些问题,由于安全原因,新版的浏览器都不支持直接获取本地URL,在网上找了些方法,如下: //FX获取文件路径方法 function ...
- php获取input file路径,JavaScript_JS获取input file绝对路径的方法(推荐),最近因需要上传文件到oracle blo - phpStudy...
JS获取input file绝对路径的方法(推荐) 最近因需要上传文件到oracle blob里, 在获取文件路径的遇到些问题,由于安全原因,新版的浏览器都不支持直接获取本地URL,在网上找了些方法, ...
- 如何获取文件的完整路径?
有没有一种简单的方法可以打印file.txt的完整路径? file.txt = /nfs/an/disks/jj/home/dir/file.txt <command> dir> & ...
最新文章
- 深度学习项目代码阅读建议
- 将来自另一个分支的所有更改合并为单个提交
- 零基础学python看什么书-转行零基础该如何学习python?很庆幸,三年前的我选对了...
- win10环境变量设置_win10配置anaconda环境变量
- mysql linux 还原_linux下java还原mysql数据库
- 阿里云 ecs mysql搭建_使用ECS和mysql搭建mysql服务器-阿里云开发者社区
- jqGrid获取数据库数据的方式
- Android注解编程的第一步---模仿ButterKnife的ViewBinder机制
- 13.MongoDB之Gridfs
- C语言实现日期转换小工具
- 全国大学生数学建模竞赛2018A题高温作业专用服装设计MATLAB程序
- ECshop仿顺丰优选综合购物商城平台源码旗舰版+团购+触屏版+微信支付
- 操作实例:创建自定义 Windows PE 映像
- 淦ORB-SLAM2源码 09--SIM(3)算法
- git bash 下backspace键无法使用的问题
- 阿里P6级别Java程序员月薪多少?阿里认证员工给出答案
- 目标检测xml文件提取
- Windows日常使用快捷方式
- 【教程】ESP32连接华为云IoT平台
- 数据库操作之导入导出dmp
热门文章
- C++xor cipher异或密码算法(附完整源码)
- java关于包的叙述_Java中构造方法,包的引用,final,super等词的概括
- ztree和php结合实例,实例详解jQuery EasyUI结合zTree树形结构制作web页面
- 26.27.28.29.极区图(南丁格尔玫瑰图)、维恩图 (Venn diagram)、面状图(Area chart)、树地图
- Sqoop导入导出的时候总是出现等待5分钟的问题解决办法
- overridePendingTransition的简介
- 清单文件,测试,打电话和发短信应用
- c语言ssl通信,利用 OpenSSL 的 C/S 安全通信程序设计
- scale html 浏览器,javascript中scale怎么使用?
- 有关机器人的会议和论文投稿时间