【问题标题】:Static class variable across appdomain跨 appdomain 的静态类变量
【发布时间】:2015-06-16 13:43:09
【问题描述】:

到目前为止,我正在构建一个 Web 服务器库;允许 php、asp.net,当然还有静态内容。

这个库的主引擎位于调用可执行文件的 appdomain 中。

该库有一个“运行时”类,其目的是存储不同类型的静态属性。这些属性是从 exe 的 appdomain 中填充的。

现在,asp.net 运行时要求它位于一个单独的域中,这可以正常工作

ApplicationManager.CreateAppDomain(typeof(ASPHost), "/", DocumentRoot)

但是,从 asp.net 运行时(位于单独的 appdomain 中)我无法从“运行时”获取我的静态属性(从 asp.net appdomain 获取值时它们不会被填充)

我对“MarshallByRefObject”没有太多经验,但我的搜索经常提到这个。

从“MarshallByRefObject”派生我的“运行时”类

 public class Runtime : MarshalByRefObject

仍然会产生空值/空白值。

【问题讨论】:

  • MarshalByRefObject 仅适用于 instances,不适用于 static 数据。您可能可以创建一个“代理”对象,该对象被发送到新的应用程序域,可以“编组”静态数据。
  • 谢谢 D,asp.net 运行时只会在每个进程运行期间实例化一次,我需要实时访问静态属性(因为它们可能会在整个周期中发生变化)我仍然感兴趣在你的方法中..你能举个例子吗?
  • 你不能创建一个调用静态的实例方法吗?
  • 这就是我所做的......但后来忽略了我在静态类中使用套接字引用的事实——它不能被序列化。 :( 无论如何,我都以不同的方式进行了......我需要的是 ASP.NET 运行时已知的端点(用于服务器变量要求) IPEndpoints 可以序列化(因此可以跨越域障碍)我只是将它们包含在 asp.net 运行时中的方法中(我有一个代理类,它在 asp.net 域中创建一个“蠕虫整体”

标签: c# asp.net static appdomain


【解决方案1】:

嗯,那是井喷。

我忽略了我的运行时类中有一个套接字字典这一事实,所以即使我要解决这个问题......我仍然会遇到传递这种类型对象的问题。

【讨论】:

    猜你喜欢
    • 2012-03-15
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    相关资源
    最近更新 更多