温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

​web、控制台应用程序、Windows服务中获取文件路径的方法

发布时间:2020-05-22 13:58:12 来源:亿速云 阅读:265 作者:鸽子 栏目:编程语言

​web、控制台应用程序、Windows服务中获取文件路径的方法

控制台应用程序:Environment.CurrentDirectory、Directory.GetCurrentDirectory()
windows服务:Environment.CurrentDirectory
windows服务安装成功后:

  1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
  2. ///
    /// 获取服务应用程序的安装路径(或者当前安装目录)///

/// /// public static string GetWindowsServiceInstallPath(string ServiceName)

{

string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;

string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();

//替换掉双引号

path = path.Replace("\"", string.Empty);

FileInfo fi = new FileInfo(path);

return fi.FullName;

//return fi.FullName.Directory.ToString();

}

//windows 服务中使用log4net
string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
string configFilePath = assemblyDirPath + "//log4net.config";
DOMConfigurator.ConfigureAndWatch(new FileInfo(configFilePath));

  /// <summary>
    /// 获取应用程序web.config中的文件配置路径,并返回物理路径
    /// 适用于web应用程序
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static string GetFileFullpath(string key)
    {
        if (string.IsNullOrEmpty(key)) return string.Empty;

        //获取应用程序的web.config中配置的路径
        string appSetting = System.Configuration.ConfigurationManager.AppSettings[key].ToString();
        //如果到的路径不是物理路径,则映射为物理路径
        if (!Path.IsPathRooted(appSetting)) appSetting = System.Web.HttpContext.Current.Server.MapPath(appSetting);

        return appSetting;
    }

/// <summary>
/// 获取应用程序.config中的文件配置路径,并返回物理路径
/// 适用于windows服务、控制台等应用程序
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetAssemblyPath(string key)
{
if (string.IsNullOrEmpty(key)) return string.Empty;

        //获取应用程序的web.config中配置的路径
        string appSetting = System.Configuration.ConfigurationManager.AppSettings[key].ToString();
        //如果到的路径不是物理路径,则映射为物理路径
        if (!Path.IsPathRooted(appSetting))
        {
            string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            string dirName = Path.GetDirectoryName(assemblyPath);
            if (dirName.IndexOf(@"\bin\Debug") > -1)
                appSetting = dirName.Replace(@"\bin\Debug", appSetting.Substring(1).Replace(@"/", @"\"));
            else
                appSetting = dirName + appSetting.Substring(1).Replace(@"/", @"\");
        }

        return appSetting;
    }

/// <summary>
/// 获取应用程序.config中的文件配置路径,并返回物理路径
/// 适用于windows服务应用程序的成功安装之后
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetInstallPath(string key)
{
if (string.IsNullOrEmpty(key)) return string.Empty;

        //获取应用程序的web.config中配置的路径
        string appSetting = System.Configuration.ConfigurationManager.AppSettings[key].ToString();
        //如果到的路径不是物理路径,则映射为物理路径
        if (!Path.IsPathRooted(appSetting))
        {
            string processPath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
            appSetting = processPath.Substring(0, processPath.LastIndexOf(@"\")) + appSetting.Substring(1).Replace(@"/", @"\");
        }

        return appSetting;
    }

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI