[英]Using HttpContext.Current.Server.MapPath in Window Application?
我可以在窗口應用程序中執行類似的操作嗎?
HttpContext.Current.Server.MapPath("Email/ForgotPassword.txt"));
該項目是基於Web的應用程序。
我的下一個項目基本上是一個窗口服務......
尋求建議。
要獲取運行Exe的路徑(這是添加“電子郵件”等路徑的好位置),請使用:
string filePath = Application.StartupPath + "\\Email\\ForgotPassword.txt";
在VS和.. \\ Email路徑上運行它時,此路徑是.. \\ bin \\ debug \\ Email路徑,在安裝后運行它。
很少有替代方法可以像這些一樣訪問目錄路徑:
string appPath = Path.GetDirectoryName(Application.ExecutablePath);
要么
using System.IO;
using System.Reflection;
string path = Path.GetDirectoryName(
Assembly.GetAssembly(typeof(MyClass)).CodeBase);
你可以使用Path類進行操作,比如獲取完整路徑,目錄名等等。
查看此MSDN論壇主題如何獲取當前目錄路徑c#winfows以獲取詳細信息。
正如你期望像網絡一樣做Windows應用程序..這是不可能的。
如果您不處理來自ASP.NET(或更具體地說, System.Web
)的請求,則HttpContext.Current
將為null。 那么答案是:不,你不能做你要求的。 也許:
Assembly.GetExecutingAssembly().Location
結合Path的方法會有用嗎?
正如其他人所說的那樣,在Windows應用程序中無法提升全新的HttpContex。 原因是雖然您可以獲得一些東西,但其他東西是基於您在Web環境中運行的事實(例如 - 您將在.Current上下文的Request / Response屬性中放置什么?)。
無論如何,你可以做一些事情來枚舉IIS網站/虛擬目錄,並找到你的 (對不好的文章代碼抱歉)。 然后你可以獲得網站的目錄,甚至可以獲得Open網站的Web.Config並閱讀它 (對於糟糕的代碼再次抱歉)。
基本上你正在查看DirectoryEntry,WebConfigurationFileMap和VirtualDirectoryMapping類,雖然我不太確定你最終會在哪里。
我仍然會要求您檢查您的架構/問題。 在Windows應用程序中需要HttpContext后,從一開始就可能出錯。
也許如果你給我們一些細節,我們可以提供幫助嗎?
正如其他HttpContex所提到的那樣,它並不適用於Window Application,它是為Web應用程序而設計的。
要在Window應用程序中模擬HttpContext行為,您可以聲明全局變量以便稍后在Application中使用它。
同樣對於當前目錄,您可以使用Assembly.GetExecutingAssembly()。位置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.