是否有可能在.net 1.1和.net 4.0应用程序之间共享应用程序数据?
本文关键字:应用程序 net 之间 共享 数据 有可能 是否 | 更新日期: 2023-09-27 18:07:17
这个问题可能很愚蠢,因为我对框架1.1知之甚少
我试图在两个不同的。net应用程序之间共享应用程序级别变量。一个是。net 1.1,另一个是。net 4.0。
场景如下:
我已经创建了一个应用程序(App11
),目标.Net Framework 1.1
使用Visual Studio 2003。我还创建了一个网站(App40
),目标.Net Framework 4.0
在Visual Studio 2010。
我在App11
中添加了App40
,我在IIS 5.1中托管了App11
。现在App40
是App11
中的一个文件夹。
App40
使用框架4.0的应用程序池,App11
使用框架1.1的应用程序池。
我没有太多的.Net Framework 1.1
知识。所以,我在谷歌上找到了。net Framework 1.1的状态管理技术。框架1.1似乎支持应用状态
我认为应用程序管理会工作。所以,我试过这样做:
在App11
í中,我在Global.asax
的Application_Start()
中定义了一个Application变量
protected void Application_Start(Object sender, EventArgs e)
{
Application["AppDATA"]="Application Data";
}
我在App11
应用程序中有一个Default.aspx
页面。默认页面有一个超链接,可以重定向到App40/Default.aspx
页面。
在App40
的Default.aspx
的Codebehind文件中,我这样做了:
//Application State check
if (Application["AppDATA"] != null)
{
applicationState.Text = "Got application state data :"+Application["AppDATA"].ToString();
}
else
{
applicationState.Text = "Application State failed to work !";
}
我已经构建了这两个应用程序,并声明了App11
的默认页面。
当我点击链接时,我看不到任何来自框架1.1的应用程序数据,它只在页面上显示Application State failed to work !
消息。
这个工作吗?或者我做这些事很愚蠢吗?
我还需要设置其他东西吗?
在我看来,你的应用程序级别的变量是在应用程序级别,所以如果你有2个不同的应用程序,这似乎很合乎逻辑,他们不共享变量。我认为你需要使用一个文件,一个数据库,甚至一个webservice来在不同的应用程序之间共享数据…
不,您不能只是在指定的应用程序之间简单地共享数据(至少这是我所知道的)。
您需要将数据存储到像XML文件这样的外部位置。一个应用程序将数据写入文件,其他应用程序可以读取它。或者你可以让它们都做同样的事情。
还可以使用数据库来存储数据。这也可以像我提到的XML文件一样工作。
我希望我能帮上忙。
跨应用程序共享状态的唯一方法是某种持久化(数据库,cookie,查询字符串…)
这是不可能做到的方式,你正在尝试。不像会话状态有不同的模式(在内存,sql,会话服务器),应用程序状态总是存储在内存中。不同应用程序池中的应用程序运行在不同的进程中,因此不可能直接共享此信息。您需要将数据存储在一个进程中,并使用某种IPC。有很多可能性:SQL、Remoting、WCF、web service等。
请注意,即使它们在同一个应用程序池中,它们也不会自动共享应用程序状态,因为它们将运行在不同的应用程序域中。但是如果没有操作系统隔离,它们之间的共享会更容易。