在WebRole中调用时,Environment.GetEnvironmentVariable(“ RoleRoot”)返回null

| 我有一个方法(在单独的类库中),该方法由WebRole和WorkerRole调用。此方法包含文件路径,该文件路径使用
Environment.GetEnvironmentVariable(\"RoleRoot\")
返回,如下所示:
private string FooPath()    
{
    string appRoot = Environment.GetEnvironmentVariable(\"RoleRoot\");
    return Path.Combine(appRoot + @\"\\\", @\"approot\\file.foo\");
}
当我从WorkerRole调用此方法时,路径将正常返回。但是,当我从WebRole调用它时,我会得到2英镑。 有任何想法吗? 编辑:我正在使用APNS-Sharp将推送消息发送到iOS,并且它需要一个.p12证书才能正常工作。目前,我的类库(由WebRole和WorkerRole调用)的根目录中都有.p12。但问题是:为什么当我从WebRole调用
RoleRoot
时返回null,而从WorkerRole调用时却返回路径?     
已邀请:
RoleRoot
对于WebRole返回false,因为WebRole使用IIS就像正常的网站一样。这就是为什么很难从WebRole获取环境变量的原因。 为了正确获取路径,我不得不使用经典的Server.MapPath并引用
bin
文件夹,而不是
approot
private string FooPathWebRole()    
{
    string appRoot = HttpContext.Current.Server.MapPath(@\"~\\\");
    return Path.Combine(appRoot + @\"\\\", @\"bin\\file.foo\");
}
对于WorkerRole,什么都没有改变:
private string FooPathWorkerRole()    
{
    string appRoot = Environment.GetEnvironmentVariable(\"RoleRoot\");
    return Path.Combine(appRoot + @\"\\\", @\"approot\\file.foo\");
}
此外,我发现Azure不会导入p12证书。我将不得不将其转换为另一种格式,我认为这不会对我有用。因此,最好的选择是将它们放置在应用程序的根目录上,并将其“构建操作”标记为“内容”。     
我从webrole尝试过,它对我有用。我将其放置在Web角色的OnStart()代码上,该代码由WaIISHost调用     
如果要加载证书,可以尝试在http://blogs.msdn.com/b/jnak/archive/2010/01/29/installing-certificates-in-windows-azure-vms.aspx中进行操作 链接自我如何将公共证书导入Windows Azure?     

要回复问题请先登录注册