WCF HttpContext.Current为空的问题

原来在项目中使用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——获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。

 

posted @   aehyok  阅读(1568)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示