浏览器中的Azure文件存储URL显示InvalidHeaderValue。

39
我正在尝试访问Azure中提供的Azure文件存储格式文件的URL,但是我收到了以下错误。我能够得到这个吗?为什么他们会提供一个无用的公共URL?还有,我如何直接从IIS访问它?

我正试图访问Azure为Azure文件存储格式中的文件提供的URL,但我遇到了以下错误。 是否可以获取此内容? 为什么他们会提供无用的公共URL? 另外,我该如何直接从IIS访问它?

<Error>
<Code>InvalidHeaderValue</Code>
<Message>
The value for one of the HTTP headers is not in the correct format. RequestId:5d681103-0a1a-00cc-5555-5s4849000000 Time:2016-02-04T14:06:50.1786949Z
</Message>
<HeaderName>x-ms-version</HeaderName>
<HeaderValue/>
</Error>

1
请查看这是否回答了你的问题:https://dev59.com/BlsW5IYBdhLWcg3wX2Zz#35046177 - Gaurav Mantri
4
为什么活动需要一个公共URL呢? - Mike Flynn
这是一个URL而不是公共URL。此外,您可以创建一个共享访问签名(例如具有读取权限),将其附加到URL上,然后您就可以直接访问文件。 - Gaurav Mantri
4
那么,我们如何创建一个公共网址(例如www.websitename.com),以便从我们的主机打开该索引文件呢? - meDeepakJain
你有没有找到解决方案? - spuder
当我使用 New-AzRmStorageShare 命令并包含 -AccessTier 参数时,我遇到了相同的错误信息。删除该参数后,一切都按预期工作。 - JohnLBevan
5个回答

33

Gaurav已经提出了一个类似的问题在这里,其中提到您应该使用“Shared Access Signature”。在Azure中的存储帐户设置中,您会发现一个主题“Shared Acess Signature”。单击“Generate SAS”后,您将获得一个“SAS Token”,您需要将其附加到您的URL。

Shared Access Signature


建议生成基于存储访问策略的 SAS,而非生成 SAS 令牌。可参考此处给出的步骤 - Tommy Leong

11

如果您使用Azure文件服务共享文件,则必须在资源URL后添加SAS令牌。例如:https://testiiju5zra.file.core.windows.net/alexaskillaudio/lamb.mp3?sv=SDFCSGDJ01231%&SDDFXsuSDFSDSDSSFD

另外,您也可以使用Azure Blob执行完全相同的操作。如果您使用Blobs,则无需在资源URL后添加额外的令牌。只需在Blobs上创建一个容器并将其设为公共。然后,您可以像这样访问您的文件:
https://testiiju5zra.blob.core.windows.net/blobaudiosource/lamb.mp3


2
如果我想使Azure文件共享不带令牌公开,该怎么办?我的很多调用将是从网页进行的HTTP GET调用,我无法附加此令牌。 - johnstaveley

7

2

1

这个错误也可能是由于local.settings.json文件中缺少或不正确的连接字符串引起的。

你的文件应该像这样:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxxxxx;AccountKey=xxxx;EndpointSuffix=core.windows.net",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接