我有一个基于vb.net的应用程序,它引用了一个Azure SQL数据库,我已经设置了一个存储帐户,我想将文件存储到应用程序中。我不确定如何在数据库和存储帐户之间创建该链接?
浏览Windows Azure存储服务中的" SQL Server数据文件"教程我无法为sotrage blob创建URI。使用Azure存储资源管理器我选择我的容器进入安全性并生成一个一切正常的签名。当我使用"在浏览器中测试"来测试URI时按钮我收到此错误:
<Error>
<Code>AuthenticationFailed</Code>
<Message>
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:22ab2830-0001-001d-67a0-5460bb000000 Time:2014-10-17T14:06:11.9864269Z
</Message>
<AuthenticationErrorDetail>
Signature did not match. String to sign used was r 2014-10-17T06:00:00Z 2014-10-25T06:00:00Z /macrocitrus/$root 2014-02-14
</AuthenticationErrorDetail>
</Error>
这意味着我不知道。我是Windows Azure的全新用户,所以我甚至不确定我是否在正确的轨道上?
是否有任何文档实际上解释了允许从SQL DB到Azure存储帐户的存储访问所需的步骤或内容?
答案 0 :(得分:0)
我不建议在SQL数据库中保存二进制内容。相反,我建议您将它们保存在blob存储中。以下是我这样做的原因:
在这些场景中的一般方法是将blob存储中的二进制数据保存为blob(将blob视为云中的文件)。由于每个blob都有一个唯一的URL,因此您只需将URL存储在SQL数据库表中即可。因此,如果我们采用这种方法,您将要做的是首先在blob存储中上传blob,获取其URL然后更新数据库。
如果你在blob存储中搜索上传文件,我相信你会发现很多带有源代码的例子(所以我不打算在这里提供它:);我希望它没事。)
现在遇到你正在犯的错误。基本上,您使用Azure存储资源管理器创建的链接称为Shared Access Signature (SAS) URL
,它基本上授予对存储帐户的时间限制/权限限制访问权限。现在,Azure Storage Explorer为您提供了容器的SAS URL。您可以通过两种方式使用该网址(假设您在创建SAS网址时授予了Read
和List
权限:
restype=container&comp=list
附加到您的URL,然后将其粘贴到浏览器中,您将看到所有blob的XML列表。https://[youraccount].blob.core.windows.net/[yourcontainer]?[somestuffhere]
且您的blob名称为myawesomepicture.png
,那么您在浏览器中查看该文件的SAS网址将为https://[youraccount].blob.core.windows.net/[yourcontainer]/myawesomepicture.png?[somestuffhere]
我写了一篇关于使用共享访问签名的博客文章,您可能会发现它很有用:http://gauravmantri.com/2013/02/13/revisiting-windows-azure-shared-access-signature/。