簡體   English   中英

在Window Application中使用HttpContext.Current.Server.MapPath?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM