Rest Can';t为Azure文件创建工作共享访问签名

Rest Can';t为Azure文件创建工作共享访问签名,rest,azure,azure-storage,Rest,Azure,Azure Storage,我需要创建SAS,以便创建Azure SQL扩展事件会话。事件会话需要通过SAS的文件数据存储目标,我无法创建一个有效的目标。以下是我尝试过的: 确定了一个不是blob的存储帐户;只是一般性的。我很确定我需要一般的,所以我可以直接创建文件 在其中创建了一个文件共享 使用azure storage explorer,右键单击该文件共享并选择“获取共享访问签名” 选中读取、写入、列出和创建 这给了我网址 如果我只是尝试跟随这个URL,或者在代码中创建一个CloudFile对象,我会得到一个常见的错

我需要创建SAS,以便创建Azure SQL扩展事件会话。事件会话需要通过SAS的文件数据存储目标,我无法创建一个有效的目标。以下是我尝试过的:

  • 确定了一个不是blob的存储帐户;只是一般性的。我很确定我需要一般的,所以我可以直接创建文件
  • 在其中创建了一个文件共享
  • 使用azure storage explorer,右键单击该文件共享并选择“获取共享访问签名”
  • 选中读取、写入、列出和创建
  • 这给了我网址
  • 如果我只是尝试跟随这个URL,或者在代码中创建一个
    CloudFile
    对象,我会得到一个常见的错误,服务器无法验证请求。确保包括签名在内的授权标头的值格式正确。签名不匹配。使用的签名字符串为rwl 2018-12-25T16:29:51Z 2018-12-29T16:29:00Z/file/cs7f0fbc5104d4ax435dx883/$root 2018-03-28
  • 尝试按建议添加
    comp=list&restype=container
    。没有快乐
  • 确保我没有正在使用的访问策略
  • 转到azure门户并在存储帐户级别创建了不同的SAS(无法在文件共享上创建)。这给了我这个“文件服务SAS URL”:
  • 如果尝试该URL,则请求URI中指定的查询参数之一的值无效。我不知道哪个参数是有问题的,它们看起来不错,但我不知道值
    srt=sco
    表示什么。基于
    srt
    是资源类型,但我不知道值
    sco
    表示什么
非常困惑,正在寻找建议


对于任何未来的读取器,扩展事件会话(因为它们编写文件)都需要blob容器,而不是常规/文件/队列容器。至少我只能让它们这样工作。

您可能对SAS URL的显示方式感到困惑。事实上,您得到的SAS URL只是提供了如何使用SAS令牌的示例,它们不能直接使用。因此,您看到了这些错误的发生

  • 服务级别SAS URL,即您从Storage Explorer获得的URL

    它的格式为
    fileEndPoint/fileShareName?SASToken
    。SASToken允许我们对指定文件共享中的所有文件进行操作。为了利用令牌,我们需要在URL中添加文件名,即
    fileEndPoint/fileShareName/fileName?SASToken

    comp=list&restype=container
    是在Blob容器中列出Blob,而不是用于文件共享

  • 帐户级SAS URL,即您从Azure门户获得的URL

    它的格式为
    fileEndPoint/?SASToken
    。同样,我们需要补充URL以使其有效,即
    fileEndPoint/fileShareName/fileName?SASToken
    。请注意,此SASToken对所有存储资源都具有所有权限,因为所有选项都已选中

    sco
    表示我们有权对服务、容器和对象进行操作,这表明了权限范围,请查看详细信息

  • 我不熟悉Azure SQL扩展事件会话,但如果您只需要处理一个文件共享中的文件,第一个就足够了