我有一个Azure Webrole,它有一个MVC应用程序和一个WCF服务。 在webrole的“OnStart”方法中,我实例化了一个代表IOC容器的静态变量。
之后,当我进行外部服务调用并尝试获取容器时,该变量为空...
我是否遗漏了某些内容或者为什么服务中没有静态内容?
如果重要,我正在运行Azure SDK 1.8
答案 0 :(得分:1)
我想我知道你的意思。您在WebRole.cs类中初始化IOC容器,然后尝试在WCF服务或MVC应用程序中使用它,该应用程序托管在相同 Web角色实例
嗯,这是不可能的。您必须知道在WebRole.cs中运行的代码在与您的实际Web应用程序(w3wp.exe中的MVC网站/ WCF服务)不同的进程(WaIISHost.exe)中运行:
详细解释here。
如果要为Web应用程序初始化IOC容器,则应在Global.asax文件中执行此操作。如果您还想在WebRole.cs中使用IOC容器(在Web应用程序启动之前做一些工作),您还需要在WebRole.cs文件中初始化它(因为这些是2个不同的进程)。 / p>
答案 1 :(得分:0)
如果您的WebRole有两个站点/角色,一个用于MVC应用程序,一个用于WCF服务(检查您的配置),那么您在同一个WebRole(云服务VM)中运行两个独立的应用程序,每个应用程序具有不同的端点。您无法跨应用程序共享静态资源。您还需要在WCF服务中实例化实例。