gpt4 book ai didi

azure - Environment.GetEnvironmentVariable ("RoleRoot")在 WebRole 中调用时返回 null

转载 作者:行者123 更新时间:2023-12-04 10:57:02 25 4
gpt4 key购买 nike

我有一个方法(在单独的类库中),由 WebRole 和 WorkerRole 调用。此方法包含文件的路径,使用 Environment.GetEnvironmentVariable("RoleRoot") 返回该路径,如下所示:

private string FooPath()    
{
string appRoot = Environment.GetEnvironmentVariable("RoleRoot");
return Path.Combine(appRoot + @"\", @"approot\file.foo");
}

当我从 WorkerRole 调用此方法时,路径会正常返回。但是当我从 WebRole 调用它时,我得到 null

有什么想法吗?

编辑:我正在使用 APNS-Sharp 向 iOS 发送推送消息,它需要 .p12 证书才能工作。目前,我的类库的根目录中有 .p12(由 WebRole 和 WorkerRole 调用)。但重点是:为什么当我从 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证书。我必须将其转换为另一种格式,我认为这对我不起作用。因此,最好的选择是将它们放在应用程序的根目录中,并将其构建操作标记为内容

关于azure - Environment.GetEnvironmentVariable ("RoleRoot")在 WebRole 中调用时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com