У меня возникли проблемы с работой Azure на сервере разработки. У меня есть приложение Silverlight, которое я хочу подключить к Azure, поэтому я предоставляю REST API из веб-роли.
Вот мой класс обслуживания:
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ExpenseService
{
    private ExpenseDataSource expenseData = new ExpenseDataSource();
    [OperationContract]
    [WebGet(UriTemplate="expenses", ResponseFormat=WebMessageFormat.Xml)]
    public List<String> GetExpenses()
    {
        return expenseData.Select().ToList();
    }
}
Инициализация типа ExpenseDataSource не удалась:
public class ExpenseDataSource
{
    private static CloudStorageAccount storageAccount;
    private ExpenseTableContext context;
    static ExpenseDataSource()
    {
        CloudStorageAccount.SetConfigurationSettingPublisher(
            (configName, configSettingPublisher) =>
            {
                string connectionString = RoleEnvironment.GetConfigurationSettingValue(configName);
                configSettingPublisher(connectionString);
            }
        );
        storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
        CloudTableClient.CreateTablesFromModel(typeof(ExpenseTableContext), storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials);
    }
    // ...
}
Ошибка:
SEHException было поймано
Внешний компонент вызвал ошибку исключения.
Я не уверен, что я делаю неправильно. Я пытаюсь следовать этому руководству. Автор описывает необходимость сделать что-то по-другому для сред, отличных от Azure, например для тестов NUnit. Нужно ли мне что-то делать для работы на сервере разработки? Должен ли я просто настроить это приложение для использования реального хранилища Azure, даже если оно работает на моей машине?
Обновление: если я закомментирую конструктор ExpenseDataSource и просто использую поддельные данные, сервис будет работать нормально.
Обновление 2: @Maupertuis ответил, что я не могу настроить учетную запись хранения из статического инициализатора. Однако это взято непосредственно из примера кода MS Windows Azure:
public class GuestBookEntryDataSource
{
    private static CloudStorageAccount storageAccount;
    private GuestBookDataContext context;
    static GuestBookEntryDataSource()
    {
        storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
        CloudTableClient.CreateTablesFromModel(
            typeof(GuestBookDataContext),
            storageAccount.TableEndpoint.AbsoluteUri,
            storageAccount.Credentials);
    }
    // ...
 }
Может ли это когда-нибудь сработать?
 
                                                                     
                                                                     
                                                                     
                                                                     
                                                                    
SetConfigurationSettingPublisherвOnStart(), но он так и не был вызван. Я поставил там точку останова, которая не сработала. Я думал, чтоOnStart()всегда бегал? 09.10.2010