我可以在窗口應用程序中這樣做嗎?在Window應用程序中使用HttpContext.Current.Server.MapPath?
HttpContext.Current.Server.MapPath("Email/ForgotPassword.txt"));
該項目是一個基於Web的應用程序。
而我的下一個項目基本上是一個窗口服務...
尋求建議。
我可以在窗口應用程序中這樣做嗎?在Window應用程序中使用HttpContext.Current.Server.MapPath?
HttpContext.Current.Server.MapPath("Email/ForgotPassword.txt"));
該項目是一個基於Web的應用程序。
而我的下一個項目基本上是一個窗口服務...
尋求建議。
要獲得EXE文件在運行(這是一個很好的位置,以增加像「電子郵件」路徑),使用路徑:
string filePath = Application.StartupPath + "\\Email\\ForgotPassword.txt";
此路徑是.. \ BIN \調試\電子郵件當你在VS上運行它,並且在安裝後運行它時,
有交替幾做到這一點像這些訪問的目錄路徑:
string appPath = Path.GetDirectoryName(Application.ExecutablePath);
或
using System.IO;
using System.Reflection;
string path = Path.GetDirectoryName(
Assembly.GetAssembly(typeof(MyClass)).CodeBase);
你可以做的Path類操作一樣得到完整的路徑,目錄名等等。
查看詳情MSDN論壇主題How to get the current directory path c# winfows for application。
正如你期望做的web應用程序一樣,它不是 可能。
如果您未處理來自ASP.NET(或更具體地說,System.Web
)的請求,則HttpContext.Current
將爲空。那麼答案是:不,你不能做你正在問的問題。也許:
Assembly.GetExecutingAssembly().Location
結合方法從Path將是有用的嗎?
正如其他人所建議的,不可能在Windows應用程序中無用的提升整個新HttpContex。原因在於,儘管您可以獲得某些內容,但其他內容則基於您在Web環境中運行的事實(例如,您將在.Current上下文的Request/Response屬性中添加什麼內容?)。
無論如何,有一些事情你可以做 Enumerate the IIS Web Sites/Virtual Directories, and find yours(對不起的文章代碼抱歉)。 然後您可以獲取該網站的目錄,甚至可以獲得 Open website's Web.Config and read it(對不起,再次輸入錯誤代碼)。
基本上你正在看DirectoryEntry,WebConfigurationFileMap和VirtualDirectoryMapping類,儘管我不太確定你最終會在哪裏。
不過我真的會問你審查你的架構/問題。在Windows應用程序中需要HttpContext後,從一開始就可能會出錯。
也許如果你給我們更多的細節我們可以幫忙嗎?
正如其他HttpContex提到的並不意味着在Window應用程序中使用它是爲Web應用程序。
爲了模擬Window應用程序中的HttpContext行爲,您可以聲明全局變量以便稍後在Application中使用它。
也爲當前目錄,你可以使用Assembly.GetExecutingAssembly()。位置
感謝@ Niranjan..This是我尋求... – Worgon