1

我开始为一个项目研究 OpenStack 对象存储。为此,我使用 OpenStack.NET 库和 C#。这个库是由 RackSpace 创建的,但我使用的是不同的 OpenStack Provider。

在实例化新的 CloudIdentityProvider 时,我可以通过指定身份验证服务 URL 来很好地进行身份验证:

CloudIdentity foo = new CloudIdentity()
            {
                Username = userName,
                Password = password
            };
CloudIdentityProvider bar = new CloudIdentityProvider(new Uri("http://foo.bar"));
UserAccess ua = bar.Authenticate(foo);

这很好用。但是,当我尝试从指定区域检索对象容器时,出现错误:

CloudFilesProvider cfp = new CloudFilesProvider(foo, bar);            
IEnumerable<Container> listOfContainers = cfp.ListContainers(region:"SBG-1");

上面的第二行抛出了这个错误:

用户无权访问请求的服务或区域。

现在我不认为这就是实际的错误,因为这个用户是从提供者的 Web 界面创建对象容器的人。我在想,也许我需要明确指定服务端点 URL(就像我为身份验证所做的那样),但对于我的生活,我似乎找不到任何方法来做到这一点。

OpenStack.NET 文档非常有限,并且倾向于坚持使用 RackSpace,并没有真正进入通用示例。

4

0 回答 0