azure – Environment.GetEnvironmentVariable(“RoleRoot”)在W
发布时间:2020-12-14 22:35:24 所属栏目:资源 来源:网络整理
导读:我有一个方法(在一个单独的类库中),由WebRole和WorkerRole调用.此方法包含使用Environment.GetEnvironmentVariable(“RoleRoot”)返回的文件路径,如下所示: private string FooPath() { string appRoot = Environment.GetEnvironmentVariable("RoleRoot");
我有一个方法(在一个单独的类库中),由WebRole和WorkerRole调用.此方法包含使用Environment.GetEnvironmentVariable(“RoleRoot”)返回的文件路径,如下所示:
private string FooPath() { string appRoot = Environment.GetEnvironmentVariable("RoleRoot"); return Path.Combine(appRoot + @"",@"approotfile.foo"); } 当我从WorkerRole调用此方法时,路径将正常返回.但是当我从WebRole调用它时,我得到null. 有任何想法吗? 编辑:我使用APNS-Sharp向iOS发送推送消息,它需要一个.p12证书才能工作.目前我在我的类库的根目录中有.p12(由WebRole和WorkerRole调用).但关键是:当我从WebRole调用RoleRoot时,为什么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 + @"",@"binfile.foo"); } 对于WorkerRole,没有任何改变: private string FooPathWorkerRole() { string appRoot = Environment.GetEnvironmentVariable("RoleRoot"); return Path.Combine(appRoot + @"",@"approotfile.foo"); } 此外,我发现Azure不会导入p12证书.我不得不将它转换成另一种格式,我认为这种格式对我不起作用.因此,最好的选择是将它们放在应用程序的根目录上,并将其Build Action标记为Content. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |