日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/9/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定时发布任务,在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中获取文件的物理路径的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。