2013-01-04 87 views
0

我有一个Azure Webrole,它有一个MVC应用程序和一个WCF服务。 在webrole的“OnStart”方法中,我实例化一个表示IOC容器的静态变量。Azure:在webrole和web服务之间共享对象实例

之后,当我做一个外部服务电话和我试图让容器,变量为空...

我缺少的东西或者为什么不是静态提供给服务?

如果它的事项我运行Azure的SDK 1.8

+0

请参阅:http://stackoverflow.com/questions/13810590/static-classes-and-multiple-instances-on-azure –

回答

0

如果您WebRole有两个网站/角色,一个是MVC应用程序,一个用于WCF服务(检查你的配置),那么你正在运行两个独立应用程序在同一个WebRole(云服务虚拟机)中,每个都有不同的端点。你不能在应用程序间共享静态资源。你还需要在你的WCF服务中实例化一个实例。

1

我想我知道你的意思。您在WebRole.cs类中初始化您的IOC容器,然后尝试在WCF服务或托管在您的MVC应用程序中使用它,该托管在相同的 Web角色实例

呃,那是不可能的。你要知道,在WebRole.cs运行的代码在不同的进程(WaIISHost.exe)比你的实际Web应用程序(MVC网站/ WCF在w3wp.exe的服务)上运行:

enter image description here

这是详细解释here

如果您想为您的Web应用程序初始化您的IOC容器,则应该在Global.asax文件中执行此操作。如果你还想在WebRole.cs中使用IOC容器(在Web应用程序启动之前做一些工作),你还需要在WebRole.cs文件中初始化它(因为它们是2个不同的进程)。