我有一个使用新.NET后端的Azure移动服务。在Global.asax
(应用程序初始化)中,我尝试调用Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.IsAvailable
以查看它当前是否在云中运行。
到目前为止,我一无所有,只有问题。
仅引用Microsoft.WindowsAzure.ServiceRuntime
,由于缺少引用(或加载失败)msshrtmi
,我得到一个TypeInitializationException。
如果我向msshrtmi
添加手动引用,则会发生以下两种情况之一:
如果它是x86引用,它可以正常工作但在部署时会抛出警告。它运行正常,访问RoleEnvironment
时不会崩溃,但RoleEnvironment.IsAvailable
始终返回false
。
如果它是x64引用,它会抛出相同的异常,就好像它不存在一样。
我在部署之前已经清理(并删除了bin / obj),通过can服务部署或直接从项目发布,并确保它们都设置为Copy Local = True
。似乎没有任何帮助。
所以,我需要帮助解决两件事之一(从我能够说出来的事情)。
1)在不使用RoleEnvironment
的情况下确定移动服务当前是否在云(或云模拟器)中运行的方法。
2)让msshrtmi
为我的移动服务工作的方法。
最后一点:作为参考here,我确实确保它们都引用了x64或x86 Windows.Azure.ServiceRuntime
和{{1}的相同副本}。
作为最后一个想法,我想知道Azure移动服务是否不在角色中运行,即使它被设置为Web角色。如果是这样,我将需要一个msshrtmi
替代方案。