У меня проблемы с работой 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.Нужно ли что-то делать для запуска на сервере dev?Должен ли я просто настроить это приложение для использования реального хранилища 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);
}
// ...
}
Может ли это когда-нибудь работать?