【问题标题】:Access Application global variable from WCF that runs asynchronously从异步运行的 WCF 访问应用程序全局变量
【发布时间】:2013-12-04 11:08:59
【问题描述】:

我正在尝试从 WCF 访问 global.asax 应用程序变量,这至少是我的目标。我尝试了许多类型的解决方案,但我现在尝试的一种是使用静态变量。

我已经像这样创建了一个 StaticVariable.cs 类:

  public static class StaticVariables
    {
        private static string _Key = "name1";

        public static Object someInfo
        {
            get
            {    
                return HttpContext.Current.Application[_Key];
            }           
        } 
    }

Application["name1"] 在 global.asax.cs 中初始化。我可以在访问我的 Web 服务时阅读它,但不能在我的 WCF 服务中阅读。

在我的 WCF 中,我调用 StaticVariables someInfo 来检索数据,但我得到了:

System.Web.HttpContext.Current is null error

我的 WCF 正在异步运行,并使用 Task<int>.Factory.FromAsync 从 Web 服务中调用它。所以我认为问题在于 WCF 不在主线程上运行,但我不确定。

所以似乎静态类在我的情况下不起作用,我想知道如何解决这个问题。谢谢

【问题讨论】:

    标签: c# .net wcf web-services global-asax


    【解决方案1】:

    你为什么不简单地使用静态变量?

    HttpContext 依赖于 ASP.NET 管道。在与主机无关的模型(OWIN 或自托管)中,您无权访问它。

    HttpApplicationState 中的应用程序存储仅在您需要访问当前 HttpContext 时才有用。如果没有必要,您应该简单地使用静态属性。

    此外,HttpApplicationState 最初是为了向后兼容经典 ASP 而创建的。

    public static class StaticVariables
    {
        public static object SomeInfo { get; set; }
    }
    

    另请参阅Singleton and HttpApplicationStatehttp://forums.asp.net/t/1574797.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多