在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()。位置