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

我可以在窗口应用程序中执行类似的操作吗?

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网站/虚拟目录,并找到你的 (对不好的文章代码抱歉)。 然后你可以获得网站的目录,甚至打开网站的Web.Config并阅读它 (抱歉再次出现错误的代码)。

基本上你正在查看DirectoryEntry,WebConfigurationFileMap和VirtualDirectoryMapping类,虽然我不太清楚你最终会在哪里。

我仍然会要求您检查您的架构/问题。 在Windows应用程序中需要HttpContext后,从一开始就可能出错。

也许如果你给我们一些细节,我们可以提供帮助吗?

正如其他HttpContex所提到的那样,它并不适用于Window Application,它是为Web应用程序而设计的。

要在Window应用程序中模拟HttpContext行为,您可以声明全局变量以便稍后在Application中使用它。

同样对于当前目录,您可以使用Assembly.GetExecutingAssembly()。位置