gpt4 book ai didi

C# Azure 文件共享抛出错误“服务器无法验证请求

转载 作者:行者123 更新时间:2023-12-05 05:33:25 25 4
gpt4 key购买 nike

我使用以下代码将文件复制到 Azure 文件共享。它抛出错误,有时当我这样做时它会起作用

  1. 例如通过替换连接字符串中的新 key 来重置 key
  2. 通过更改本地计算机中的 cst 和 est 时间(并非所有时间都有效)

我收到错误为

Azure.RequestFailedException:服务器无法对请求进行身份验证。确保授权 header 的值格式正确,包括签名。请求 ID:b6a51c3f-b01a-0037-7774-d19906000000时间:2022-09-26T06:53:52.3042347Z状态:403(服务器无法验证请求。请确保授权 header 的值格式正确,包括签名。)错误代码:身份验证失败附加信息:AuthenticationErrorDetail:HTTP 请求“Xrp6MB0=”中发现的 MAC 签名与任何计算的签名不同。服务器使用以下字符串进行签名:'GET2022 年 9 月 22 日星期四 10:07:55 GMT“0x8DA9C8251A37348”x-ms-客户端-请求-id:25ff53d8-7a55-414a-954b-ff8f6d05bcedx-ms-date:2022 年 9 月 26 日星期一 06:53:52 GMTx-ms-return-client-request-id:truex-ms-版本:2021-08-06

内容: AuthenticationFailedServer 未能对请求进行身份验证。确保授权 header 的值格式正确,包括签名。请求 ID:b6a51c3f-时间:2022-09-26T06:53:52.3042347ZHTTP 请求“Xrp6MB0=”中发现的 MAC 签名与任何计算出的签名不同。服务器使用以下字符串进行签名:'GET

我正在使用访问 key 1 访问 Azure 文件共享

有人可以让我知道我在代码中犯的错误

using Azure;
using Azure.Storage.Files.Shares;
using Microsoft.WindowsAzure.Storage.File;
using System.Collections.Generic;

var connectionString = "DefaultEndpointsProtocol=https;AccountName=XXXXX;AccountKey=lPI20ZMzVjB9xcPmIJQjjIhFIuWs6JxTcxef7Ri3hRMtE3N1ov81gpabOVe+0BKEFiEZdhcAPhYC+ASt4Yjddw==;EndpointSuffix=core.windows.net";
var fileShareName = "FileshareName";
var folderName = "FolderName";
ShareClient share = new(connectionString, fileShareName);
if (!share.Exists())
{
share.CreateIfNotExists();
}
var directory = share.GetDirectoryClient(folderName);
if(!directory.Exists())
{
directory.CreateIfNotExists();
}
var directories = directory.GetFilesAndDirectories();

string sFilename = "sample.pdf";
string sPath = @"\\abc\Test.pdf";

foreach (var s in directories)
{
if (s.Name == "Files")
{
var x = directory.GetSubdirectoryClient(s.Name);
ShareFileClient file = x.GetFileClient(sFilename);
using (FileStream stream = File.OpenRead(sPath))
{
file.Create(stream.Length);
file.UploadRange(
new HttpRange(0, stream.Length),
stream);
}
}
}
Console.ReadLine();

最佳答案

if (!share.Exists()) 不起作用,我们需要编写为 share.CreateIfNotExists()。 它解决了身份验证错误。

我认为该错误是由于运行代码的计算机上的日期/时间设置造成的。

如果您注意到错误消息,则 Azure 存储服务返回的日期/时间为 2022-09-26T06:53:52.3042347Z,但请求中发送的日期/时间值为 >2022 年 9 月 22 日星期四 10:07:55 GMT

由于运行代码的计算机上的当前日期/时间比 Azure 存储服务上的日期/时间早大约 4 天,因此对 Azure 存储的请求将被拒绝。

我建议查看本地计算机上的日期/时间值并确保其正确。

关于C# Azure 文件共享抛出错误“服务器无法验证请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73850413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com