0

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

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

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

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

4

2 回答 2

1

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

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

在此处输入图像描述

这在这里详细解释。

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

于 2013-01-04T06:48:34.490 回答
0

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

于 2013-01-04T02:14:38.710 回答