RoleRoot
возвращает false для WebRole, потому что 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. Я должен был бы преобразовать это в другой формат, который я не полагаю, работал бы для меня. Поэтому лучше всего поместить их в корень приложения и отметить его Действие построения до Содержимое .