我在开发服务器上进行Azure工作时遇到了一些麻烦。我有一个我想连接到Azure的Silverlight应用程序,因此我从Web角色公开了一个REST API。开发服务器上的Azure问题
这里是我的服务类:
[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被抓获
外部合作mponent已抛出一个 异常。
我不知道我在做什么错。我正在尝试跟随此tutorial。作者描述了需要为非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);
}
// ...
}
难道这能工作吗?
是的,SO停电是一个巨大的痛苦。谢谢你的回答,我会试试这个。我认为这样做的原因可以从我从MSFT下载的Windows Azure培训套件(上面贴出)中找到。奇。 – 2010-10-09 16:14:36
我把'SetConfigurationSettingPublisher'调用放在'OnStart()'中,但它永远不会被调用。我在那里没有被击中的断点。我认为'OnStart()'总是跑? – 2010-10-09 16:43:02
WebRole类是公开的吗?它是否继承自RoleEntryPoint?它是您的应用唯一的RoleEntryPoint类吗? – Eilistraee 2010-10-11 10:44:32