Мой код работает в веб-роли или на веб-сайте?

1

Я перемещаю развертывание веб-приложения с веб-сайта Azure в веб-роли в облачной службе.

Часть миграции включала резервирование некоторого локального хранилища в конфигурации ролей и изменение взаимодействия с локальной файловой системой, чтобы использовать следующую мантру, чтобы найти путь, который хорош для записи:

LocalResource tempStorageResource = RoleEnvironment
                                       .GetLocalResource("SomeRoleStorage");
var targetFolderPath = tempStorageResource.RootPath;

Однако я бы хотел, чтобы все работало в экземпляре WebSite. Я собираюсь написать поставщик путей, который абстрагирует фактическое местоположение. Часть реализации этого потребует обнаружения того, запущена ли я локально/в отладчике, но мне также нужно знать, работает ли запущенный код под WebSite или WebRole. Как я могу это сделать?

public class AzurePathProvider : ILocalStoragePathProvider
{
    public string GetStoragePath(string key)
    {
        var isWebRole = //????;
        if(isWebRole)
        {
            LocalResource tempStorageResource = 
                RoleEnvironment
                    .GetLocalResource(key);
            return tempStorageResource.RootPath;
        }
        else
        {
            return "/some/other/storage/location";
        }
    }
}
  • 0
    Не проще ли было бы просто добавить флаг в web.config ?
  • 0
    @James: Джеймс: Да, это будет работать.
Показать ещё 9 комментариев
Теги:
azure
azure-storage
azure-web-sites
azure-web-roles

1 ответ

2
Лучший ответ

Проверьте на RoleEnvironment.IsAvailable чтобы решить, работает ли код в Cloud Service или нет. Это всегда будет true если ваш код работает в Cloud Service, иначе он будет false.

Кроме того, чтобы определить, работает ли код в вычислительном эмуляторе, вы можете проверить RoleEnvironment.IsEmulated вместе с RoleEnvironment.IsAvailable.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню