在这被标记为重复之前:我已经阅读了 SO 上的每个问题/答案以及上述错误消息,但没有一个解决了我的问题。我一定错过了一些简单的东西,因为应该简单的东西不起作用。
我创建了一个事件中心命名空间,其中包含“发送”共享访问策略和命名空间中的事件中心。
使用Python Event Hub SDK中的代码(在另一个答案中建议),我有以下脚本来创建Authorization标头:
import time
from base64 import b64encode, b64decode
from hashlib import sha256
from hmac import HMAC
from urllib.parse import quote_plus, urlencode
def generate_sas_token(uri, policy, policy_key, expiry_days=14):
expiry = time.time() + expiry_days * 60 * 60 * 24
encoded_uri = quote_plus(uri)
ttl = int(expiry)
sign_key = '{}\n{}'.format(encoded_uri, ttl)
signature = b64encode(HMAC(b64decode(policy_key), sign_key.encode('utf-8'), sha256).digest())
result = {
'sr': uri,
'sig': signature,
'se': str(ttl),
'skn': policy
}
return 'SharedAccessSignature ' + …Run Code Online (Sandbox Code Playgroud) 我已经创建了天蓝色存储帐户。我已经创建了文件存储。我已经生成了 SAS 令牌。当我尝试使用 sas 令牌访问文件时,显示错误“远程服务器返回错误:(403) 禁止。”
我能够生成 SAS 令牌。当我尝试访问文件存储中的文件时抛出异常。我尝试在浏览器上复制并粘贴网址,但会引发错误“
<Error>
<Code>AuthorizationResourceTypeMismatch</Code>
<Message>
This request is not authorized to perform this operation using
this resource type. RequestId:4cbc0cbe-401a-00c2-2edf-
202bc4000000 Time:2019-06-12T05:26:39.4816687Z
</Message>
</Error>"
Run Code Online (Sandbox Code Playgroud)
静态字符串 GetAccountSASToken()
SharedAccessAccountPolicy policy = new
SharedAccessAccountPolicy()
{
Permissions = SharedAccessAccountPermissions.Read |
SharedAccessAccountPermissions.Write |
SharedAccessAccountPermissions.List,
Services = SharedAccessAccountServices.File,
ResourceTypes = SharedAccessAccountResourceTypes.Service,
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
Protocols = SharedAccessProtocol.HttpsOnly,
};
Run Code Online (Sandbox Code Playgroud)
XDocument objdoc = XDocument.Load(filepath+ sasToken);
Run Code Online (Sandbox Code Playgroud)
将文件加载到 XDocument 后,我必须执行一些读写操作。请帮助查找我正在做的错误