原来在项目中使用HttpContext.Current没什么问题,但是到了中期阶段,项目重构等,并且要求使用WCF,所以就出现了HttpContext.Current为null的问题。
现在在项目解决的第一种方案是
public class Utils
{
public static string ExeFullPath; // 当前EXE的全路径名称
public static string ExeDir; // 当前EXE文件所在的目录
public static string ExeFileName; // 当前EXE文件的文件名称
public static string AppConfigFileName; // .NET程序缺省配置文件文件名(WinForm版本)
public static string AppConfigFullPath; // .NET程序缺省配置文件的全路径名称(WinForm版本)
static Utils()
{
ExeFullPath = Assembly.GetEntryAssembly().Location;
ExeDir = Path.GetDirectoryName(ExeFullPath);
StrUtils.EnsureEndsWith(ref ExeDir, '\\');
ExeFileName = Path.GetFileName(ExeFullPath);
AppConfigFileName = ExeFileName + ".config";
AppConfigFullPath = ExeFullPath + ".config";
}
}
调用的是的时候就直接Utils.ExeFullPath,这样就获取了当前EXE文件的全路径名称。
当然也可以通过以下几种方式进行处理,通过调试你就会发现问题的症结。
System.AppDomain.CurrentDomain.BaseDirectory。
1. Application.StartupPath——获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。 2. Environment.CurrentDirectory——获取和设置当前目录(即该进程从中启动的目录)的完全限定路径,只是“当前”目录,不一定是exe文件所在的目录。在用FileOpenDialog选择一个文件以后这个目录就跟着发生改变了。 3. Application.ExecutablePath——获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。