【问题标题】:Azure: Share object instance between webrole and web serviceAzure:在 webrole 和 Web 服务之间共享对象实例
【发布时间】:2013-01-04 02:01:20
【问题描述】:

我有一个 Azure Webrole,它有一个 MVC 应用程序和一个 WCF 服务。 在 webrole 的“OnStart”方法中,我实例化了一个代表 IOC Container 的静态变量。

之后,当我进行外部服务调用并尝试获取容器时,变量为空...

我是否遗漏了什么,或者为什么该服务无法使用静态?

如果重要的话,我正在运行 Azure SDK 1.8

【问题讨论】:

标签: wcf azure azure-web-roles


【解决方案1】:

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

嗯,这是不可能的。您必须知道,WebRole.cs 中运行的代码与您的实际 Web 应用程序(w3wp.exe 中的 MVC 网站/WCF 服务)在不同的进程(WaIISHost.exe)中运行:

这是here详细解释。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      相关资源
      最近更新 更多