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