【问题标题】:Access Windows Azure Storage using class library使用类库访问 Windows Azure 存储
【发布时间】:2013-12-31 10:29:24
【问题描述】:

我正在尝试使用 Windows Azure 开发多层云应用程序。为了存储我的数据,我选择了 Azure 存储表和 Azure 存储 Blob。

我的应用程序的不同层使用相同的一组功能,但方式不同。例如他们都必须有权访问 blob。我决定制作单个类库来访问 Windows Azure Blob Storage,但遇到了 400 错误。

当我直接从我的 Worker Role 连接到 Blob 时,它工作正常,但是当我从类库调用类时,它失败并显示 400 状态代码(错误请求)。 这是我的代码:

public class TestClass
{

    public static void Test()
    {
        string s = CloudConfigurationManager.GetSetting("StorageCS");
        CloudStorageAccount account = CloudStorageAccount.Parse
            (
             s
            );

        CloudBlobClient client = account.CreateCloudBlobClient();

        CloudBlobContainer container = 
                           client.GetContainerReference("mycontainer");

        container.CreateIfNotExists(BlobContainerPublicAccessType.Blob);

    }

}

这是一个仅尝试访问 blob 容器的测试类。 当我在我的工人角色中使用这个类时,它工作正常。如果我从另一个工作角色引用这个工作角色并在第二个角色中使用这个类,它可以工作,但是如果我将这个类移动到外部类库,它会失败。在“container.CreateIfNotExists(BlobContainerPublicAccessType.Blob);”行上引发异常这是一个带有 '400 的 StorageException。错误请求的消息。

我正在使用 Azure 存储模拟器。使用调试器,我检查了 CloudStorageAccount.Parse 方法是否有正确的连接字符串(“UseDevelopmentStorage=true”),无论如何(直接,表单类库,来自其他工作角色)类使用。使用类库好像不能访问 Azure Storage?

【问题讨论】:

  • 不,您肯定可以访问 Azure。当您使用模拟器时,它使用开发存储,它在本地。您在 Azure 上有存储帐户吗?

标签: c# azure


【解决方案1】:

请检查您的类库项目中存储客户端库的版本。它很可能是 3.0.0.0 版本。如果是这种情况,请注意当前版本 3.0.0.0 的存储客户端库与存储模拟器(开发存储)不兼容。这是因为该库使用了最新版本的存储 REST API,而模拟器仅支持之前的版本。兼容性问题在此处的存储团队博客中突出显示:http://blogs.msdn.com/b/windowsazurestorage/archive/2013/11/27/windows-azure-storage-release-introducing-cors-json-minute-metrics-and-more.aspx(请阅读帖子末尾的“Storage Emulator Guidance”部分)

我的建议是将存储客户端库降级到以前的版本 (2.1.0.4)。您可以通过 Nuget 包管理器控制台安装此版本,并在此处键入以下命令:Install-Package WindowsAzure.Storage -Version 2.1.0.4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 2014-08-29
    相关资源
    最近更新 更多