我正在尝试从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不在主线程上运行,但我不确定。
所以似乎Static类在我的情况下不起作用,我想知道如何解决这个问题。感谢
答案 0 :(得分:2)
为什么不简单地使用静态变量?
HttpContext
依赖于ASP.NET管道。在与主机无关的模型(OWIN或自托管)中,您无权访问它。
HttpApplicationState
中的应用程序存储仅在您需要访问当前HttpContext时才有用。如果没有必要,您应该只使用静态属性。
此外,HttpApplicationState
最初是为了向后兼容经典ASP而创建的。
public static class StaticVariables
{
public static object SomeInfo { get; set; }
}
另请参阅Singleton and HttpApplicationState和http://forums.asp.net/t/1574797.aspx