【问题标题】:static variable value lost in webrole静态变量值在 webrole 中丢失
【发布时间】:2011-05-31 06:46:35
【问题描述】:
>  public class WebRole : RoleEntryPoint
>     {
>         public static int x;
>         public override bool OnStart()
>         {
>            x=5;    
>            return base.OnStart();
>         }
>     }

如果我尝试获取 WebRole.x 值,它是 0,即使它在 OnStart 方法中被初始化为 5。这怎么可能?

【问题讨论】:

    标签: webrole


    【解决方案1】:

    你想完成什么?只是检查一下,因为在 windows azure 中可能有更好的方法。

    我只是在这里进行理论分析,但我猜测当您检索该值时,您实际上获得了驻留在单独进程中的对象的新副本。因此,您在角色启动期间设置的对象实例的值是不可访问的。

    【讨论】:

    • x 应该是 webrole 用来访问 web 服务的客户端代理。我想最好将它保存在 global.asax 中,所以我不需要在每个请求上重新创建代理?您对此有何看法?
    • 我同意。 OnStart 最适合用于在您的角色开始之前需要执行的任何任务。根据代理的性质,您也可以将其放入缓存中。但只有这样做,您才不必担心请求进程之间的数据溢出。
    【解决方案2】:

    static 字段不属于对象的实例。删除static

    【讨论】:

    • 他的意思是创建一个全局变量.. 如果他删除静态,那么无论如何需要持久化的数据都会丢失
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    相关资源
    最近更新 更多