排查Azure 文件存储连接和访问问题 (SMB)

本文列出了尝试从 Windows 或 Linux 客户端连接到和访问服务器消息块 (SMB) Azure 文件共享时可能发生的常见问题。 它还提供了这些问题的可能原因和解决方法。

注意

本文是否有帮助? 你的输入对我们很重要。 请使用此页面上的 “反馈 ”按钮,让我们了解本文对你的影响,或者我们如何改进它。

重要

本文仅适用于 SMB 共享。 有关网络文件系统 (NFS) 共享的详细信息,请参阅 排查 Azure NFS 文件共享问题

适用对象

文件共享类型 SMB Nfs
标准文件共享 (GPv2) 、LRS/ZRS
标准文件共享 (GPv2) 、GRS/GZRS
高级文件共享 (FileStorage) 、LRS/ZRS

无法连接到或装载 Azure 文件共享

根据用于访问 Azure 文件共享的客户端操作系统,选择“Windows”或“Linux”选项卡。

尝试连接到 Windows 中的 Azure 文件共享时,可能会收到以下错误消息。

装载 Azure 文件共享时出现错误 5

  • 发生了系统错误 5。 访问被拒绝。

原因 1:未加密的信道

出于安全性,如果信道未加密,并且未从 Azure 文件共享所在的同一数据中心进行连接尝试,则会阻止与 Azure 文件共享的连接。 如果在存储帐户上启用了“ 需要安全传输” 设置,则也会阻止同一数据中心内的未加密连接。 仅当最终用户的客户端 OS 支持 SMB 加密时,才提供加密的信道。

每个系统协商请求(包括 SMB 3)的Windows 8、Windows Server 2012和更高版本。x,它支持加密。

原因 1 的解决方案

  1. 从支持 SMB 加密 (Windows 8/Windows Server 2012或更高版本) 的客户端进行连接。
  2. 从虚拟机 (VM) 连接到用于 Azure 文件共享的 Azure 存储帐户所在的同一数据中心。
  3. 如果客户端不支持 SMB 加密,请验证存储帐户上是否禁用了“ 需要安全传输 ”设置。

原因 2:在存储帐户上启用了虚拟网络或防火墙规则

如果在存储帐户上配置了虚拟网络 (VNET) 和防火墙规则,则网络流量将被拒绝,除非客户端 IP 地址或虚拟网络已列出允许。

原因 2 的解决方案

验证是否已在存储帐户上正确配置虚拟网络和防火墙规则。 若要测试虚拟网络或防火墙规则是否导致了此问题,请暂时将存储帐户上的设置更改为 “允许从所有网络进行访问”。 若要了解详细信息,请参阅 配置 Azure 存储防火墙和虚拟网络

原因 3:使用基于标识的身份验证时共享级别权限不正确

如果用户使用 Active Directory (AD) 或Microsoft Entra 域服务身份验证访问 Azure 文件共享,则如果共享级别权限不正确,则对文件共享的访问将失败并显示“拒绝访问”错误。

原因 3 的解决方案

验证权限配置是否正确:

  • Active Directory 域服务 (AD DS) 请参阅分配共享级别权限

    使用 Microsoft Entra Connect Sync 或 Microsoft Entra Connect 云同步从 AD DS 同步到Microsoft Entra ID的组和用户支持共享级别权限分配。确认分配共享级别权限的组和用户不受“仅限云”组支持。

  • Microsoft Entra 域服务请参阅分配共享级别权限

装载或卸载 Azure 文件共享时出现错误 53、错误 67 或错误 87

尝试从本地或其他数据中心装载文件共享时,可能会收到以下错误:

  • 发生了系统错误 53。 未找到网络路径。
  • 发生系统错误 67。 找不到网络名称。
  • 发生了系统错误 87。 参数不正确。

原因 1:端口 445 被阻止

如果阻止与Azure 文件存储数据中心的端口 445 出站通信,则可能会出现系统错误 53 或系统错误 67。 若要查看允许或禁止从端口 445 进行访问的 ISP 的摘要,请转到 TechNet

若要检查防火墙或 ISP 阻止端口 445,请使用 AzFileDiagnostics 工具或 Test-NetConnection cmdlet。

若要使用 Test-NetConnection cmdlet,必须安装 Azure PowerShell 模块。 有关详细信息,请参阅安装Azure PowerShell模块。 请记得将 和 <your-resource-group-name> 替换为<your-storage-account-name>存储帐户的相关名称。

$resourceGroupName = "<your-resource-group-name>"
$storageAccountName = "<your-storage-account-name>"

# This command requires you to be logged into your Azure account and set the subscription your storage account is under, run:
# Connect-AzAccount -SubscriptionId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
# if you haven't already logged in.
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName

# The ComputerName, or host, is <storage-account>.file.core.windows.net for Azure Public Regions.
# $storageAccount.Context.FileEndpoint is used because non-Public Azure regions, such as sovereign clouds
# or Azure Stack deployments, will have different hosts for Azure file shares (and other storage resources).
Test-NetConnection -ComputerName ([System.Uri]::new($storageAccount.Context.FileEndPoint).Host) -Port 445

如果连接成功,应会看到以下输出:

ComputerName     : <your-storage-account-name>
RemoteAddress    : <storage-account-ip-address>
RemotePort       : 445
InterfaceAlias   : <your-network-interface>
SourceAddress    : <your-ip-address>
TcpTestSucceeded : True

注意

此命令返回存储帐户的当前 IP 地址。 不保证此 IP 地址保持不变,并且可能随时更改。 不要将此 IP 地址硬编码到任何脚本或防火墙配置中。

原因 1 的解决方案

解决方案 1 - 将 Azure 文件同步 用作 QUIC 终结点 可以使用 Azure 文件同步 作为解决方法,从阻止端口 445 的客户端访问Azure 文件存储。 尽管 Azure 文件存储 不直接支持通过 QUIC 的 SMB,但 Windows Server 2022 Azure Edition 确实支持 QUIC 协议。 可以使用 Azure 文件同步 在 Windows Server 2022 Azure Edition VM 上创建 Azure 文件共享的轻型缓存。此配置使用端口 443(端口 443 广泛开放,支持 HTTPS),而不是端口 445。 若要详细了解此选项,请参阅 SMB over QUIC with Azure 文件同步

解决方案 2 - 使用 VPN 或 ExpressRoute通过设置从本地到 Azure 存储帐户的虚拟专用网络 (VPN) 或 ExpressRoute,并使用专用终结点在内部网络上公开Azure 文件存储,流量将通过安全隧道而不是通过 Internet。 按照说明设置 VPN 以从 Windows 访问Azure 文件存储。

解决方案 3 - 在 ISP/IT 管理员的帮助下取消阻止端口 445 请与 IT 部门或 ISP 协作,打开到 Azure IP 范围的出站端口 445。

解决方案 4 - 使用基于 REST API 的工具(如 存储资源管理器 或 PowerShell Azure 文件存储除了支持 SMB 之外,还支持 REST。 REST 访问通过端口 443 (标准 tcp) 工作。 可以使用 REST API 编写各种工具,这些工具可实现丰富的 UI 体验。 存储资源管理器就是其中之一。 下载并安装存储资源管理器并连接到Azure 文件存储支持的文件共享。 还可以使用也使用 REST API 的 PowerShell

原因 2:已启用 NTLMv1

如果在客户端上启用了 NTLMv1 通信,则可能会出现系统错误 53 或系统错误 87。 Azure 文件存储仅支持 NTLMv2 身份验证。 启用 NTLMv1 会创建不太安全的客户端。 因此,Azure 文件存储会阻止通信。

若要确定这是否是导致错误的原因,请验证以下注册表子项是否未设置为小于 3 的值:

HKLM\SYSTEM\CurrentControlSet\Control\Lsa > LmCompatibilityLevel

有关详细信息,请参阅 TechNet 上的 LmCompatibilityLevel 主题。

原因 2 的解决方案

LmCompatibilityLevel 以下注册表子项中的值还原为默认值 3:

HKLM\SYSTEM\CurrentControlSet\Control\Lsa

失败,错误代码0x800704b3

尝试装载 Azure 文件共享时,会收到以下错误:

错误代码:0x800704b3
符号名称:ERROR_NO_NET_OR_BAD_PATH
错误说明:网络路径键入不正确、不存在或网络提供程序当前不可用。 请尝试重新设置路径的绑定,或与网络管理员联系。

原因

如果禁用任何核心 Windows 网络相关服务,则会发生此错误,因为显式依赖于这些网络服务的任何服务将无法启动。

解决方案

检查 Windows VM 中以下任何服务是否处于 “已停止” 状态:

  • 网络连接
  • 网络列表服务
  • 网络位置感知
  • 网络接口服务
  • DHCP 客户端
  • TCP/IP NetBIOS 帮助程序
  • 工作站

如果找到任何,请启动服务 () ,然后重试装载 Azure 文件共享。

应用程序或服务无法访问装载的Azure 文件存储驱动器

原因

驱动器按用户装载。 如果应用程序或服务在与装载驱动器的用户帐户不同的用户帐户下运行,则应用程序将看不到驱动器。

解决方案

使用以下解决方案之一:

  • 从包含应用程序的同一用户帐户装载驱动器。 可以使用 PsExec 等工具。

  • 在命令的用户名和密码参数 net use 中传递存储帐户名称和密钥。

  • cmdkey使用 命令将凭据添加到凭据管理器中。 通过交互式登录名或使用 runas从服务帐户上下文下的命令行执行此操作。

    cmdkey /add:<storage-account-name>.file.core.windows.net /user:AZURE\<storage-account-name> /pass:<storage-account-key>
    
  • 不使用映射驱动器号直接映射共享。 某些应用程序可能无法正确重新连接到驱动器号,因此使用完整的 UNC 路径可能更可靠:

    net use * \\storage-account-name.file.core.windows.net\share

按照这些说明操作后,在为系统/网络服务帐户运行 net use 时,可能会收到以下错误消息:“发生了系统错误 1312。 指定的登录会话不存在。 它可能已被终止。如果出现此错误,请确保传递给 net use 的用户名包含域信息, (例如: [storage account name].file.core.windows.net) 。

“我的电脑”或“这台电脑”中没有驱动器号的文件夹

如果使用 命令以管理员 net use 身份映射 Azure 文件共享,该共享似乎缺失。

原因

默认情况下,Windows 文件资源管理器不以管理员身份运行。 如果从管理命令提示符运行 net use ,则以管理员身份映射网络驱动器。 由于映射的驱动器以用户为中心,因此登录的用户帐户不会显示驱动器(如果驱动器装载在不同的用户帐户下)。

解决方案

从非管理员命令行装载共享。 或者,可以按照 此 TechNet 主题 配置 EnableLinkedConnections 注册表值。

如果存储帐户包含正斜杠,Net use 命令将失败

原因

命令 net use 将 /) (正斜杠解释为命令行选项。 如果用户帐户名称以正斜杠开头,驱动器映射将失败。

解决方案

可以使用以下步骤之一来解决此问题:

  • 请运行以下 PowerShell 命令:

    New-SmbMapping -LocalPath y: -RemotePath \\server\share -UserName accountName -Password "password can contain / and \ etc"
    

    在批处理文件中,可以通过这种方式运行 命令:

    Echo new-smbMapping ... | powershell -command –

  • 在键周围加上双引号来解决此问题 -- 除非正斜杠是第一个字符。 如果是,请使用交互模式并单独输入密码,或者重新生成密钥以获取不以正斜杠开头的密钥。

New-PSDrive 命令失败并出现“网络资源类型不正确”错误

原因

如果文件共享不可访问,可能会看到此错误消息。 例如, 端口 445 被阻止 或存在 DNS 解析问题。

解决方案

确保端口 445 处于打开状态,检查 DNS 解析和与文件共享的连接

无法访问、修改或删除 Azure 文件共享 (或共享快照)

客户启动的故障转移后出现“用户名或密码不正确”错误

在客户启动的具有异地冗余存储帐户的故障转移方案中,故障转移时不会保留文件句柄和租约。 客户端必须卸载并重新装载文件共享。

尝试访问或删除 Azure 文件共享时出现错误“无法访问”

尝试使用 Azure 门户 访问或删除 Azure 文件共享时,可能会收到以下错误:

无访问 错误代码:403

原因 1:在存储帐户上启用了虚拟网络或防火墙规则

原因 1 的解决方案

验证是否已在存储帐户上正确配置虚拟网络和防火墙规则。 若要测试虚拟网络或防火墙规则是否导致了此问题,请暂时将存储帐户上的设置更改为 “允许从所有网络进行访问”。 若要了解详细信息,请参阅 配置 Azure 存储防火墙和虚拟网络

原因 2:用户帐户无权访问存储帐户

原因 2 的解决方案

浏览到 Azure 文件共享所在的存储帐户,选择“ 访问控制 (IAM) ”,并验证用户帐户是否有权访问存储帐户。 若要了解详细信息,请参阅 如何使用 Azure 基于角色的访问控制保护存储帐户 (Azure RBAC)

文件锁和租约

如果无法修改或删除 Azure 文件共享或快照,则可能是由于文件锁定或租约造成的。 Azure 文件存储提供了两种方法来防止意外修改或删除 Azure 文件共享和共享快照:

  • 存储帐户资源锁:所有 Azure 资源(包括存储帐户)都支持 资源锁。 管理员或Azure 备份等服务可能会在存储帐户上设置锁。 资源锁存在两种变体: 修改(可阻止对存储帐户及其资源进行所有修改)和 删除(仅阻止删除存储帐户及其资源)。 通过 Microsoft.Storage 资源提供程序修改或删除共享时,将对 Azure 文件共享和共享快照强制实施资源锁。 大多数门户操作Azure PowerShell Azure 文件存储 cmdletRm,名称 (例如 Get-AzRmStorageShare ,) ,命令组中的 Azure CLI 命令 share-rm (az storage share-rm list) 使用Microsoft.Storage资源提供程序。 某些工具和实用工具(例如,存储资源管理器、旧版Azure 文件存储 PowerShell 管理 cmdlet(名称中没有Rm) (例如 Get-AzStorageShare ,) 和命令组下的share旧版 Azure 文件存储 CLI 命令 (例如, az storage share list) 在 FileREST API 中使用绕过Microsoft.Storage资源提供程序和资源锁的旧 API。 有关 FileREST API 中公开的旧管理 API 的详细信息,请参阅 Azure 文件存储 中的控制平面

  • 共享/共享快照租约:共享租约是 Azure 文件共享和文件共享快照的一种专有锁。 管理员可以通过脚本或增值服务(如Azure 备份)调用 API,从而将租约放在单个 Azure 文件共享或文件共享快照上。 将租约置于 Azure 文件共享或文件共享快照时,可以使用租约 ID 修改或删除文件共享/共享快照。 管理员还可以在修改操作(需要租约 ID)之前释放租约,或者中断不需要租约 ID 的租约。 有关共享租约的详细信息,请参阅 租约共享

由于资源锁和租约可能会干扰存储帐户/Azure 文件共享上预期的管理员操作,因此你可能希望删除已手动或通过增值服务(如Azure 备份)自动放置在资源上的任何资源锁定/租用。 以下脚本删除所有资源锁和租约。 请记得将 和 <storage-account> 替换为<resource-group>适合你的环境的值。

在运行以下脚本之前,应 安装最新版本 的 Azure 存储 PowerShell 模块。

重要

对Azure 文件存储资源使用资源锁和共享/共享快照租约的增值服务可能会定期重新应用锁和租约。 通过增值服务修改或删除锁定的资源可能会影响这些服务的正常操作,例如删除由 Azure 备份 管理的共享快照。

# Parameters for storage account resource
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"

# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $storageAccountName

# Remove resource locks
Get-AzResourceLock `
        -ResourceType "Microsoft.Storage/storageAccounts" `
        -ResourceGroupName $storageAccount.ResourceGroupName `
        -ResourceName $storageAccount.StorageAccountName | `
    Remove-AzResourceLock -Force | `
    Out-Null

# Remove share and share snapshot leases
Get-AzStorageShare -Context $storageAccount.Context | `
    Where-Object { $_.Name -eq $fileShareName } | `
    ForEach-Object {
        try {
            $leaseClient = [Azure.Storage.Files.Shares.Specialized.ShareLeaseClient]::new($_.ShareClient)
            $leaseClient.Break() | Out-Null
        } catch { }
    }

无法修改、移动/重命名或删除文件或目录

根据用于访问 Azure 文件共享的客户端操作系统,选择“Windows 或 Linux”选项卡。

在 Windows 中,你可能会看到以下错误。

孤立文件句柄或租用

文件共享的主要用途之一是,多个用户和应用程序可以同时与共享中的文件和目录进行交互。 为了帮助进行这种交互,文件共享提供了多种调解对文件和目录的访问的方法。

通过 SMB 从已装载的 Azure 文件共享打开文件时,应用程序/操作系统会请求文件句柄,即对该文件的引用。 除其他事项外,应用程序在请求文件句柄时指定文件共享模式,该模式指定Azure 文件存储强制实施的文件访问的排他性级别:

  • None:你具有独占访问权限。
  • Read:其他人可能会在打开文件时读取该文件。
  • Write:其他人可能会在打开文件时写入文件。
  • ReadWrite:和 Write 共享模式的组合Read
  • Delete:其他人可能会在打开文件时将其删除。

尽管作为无状态协议,FileREST 协议没有文件句柄的概念,但它确实提供了一种类似的机制来协调对脚本、应用程序或服务可能使用的文件和文件夹的访问:文件租用。 当文件被租用时,它被视为等效于文件共享模式为 的文件 None句柄。

尽管文件句柄和租约有重要用途,但有时文件句柄和租约可能是孤立的。 发生这种情况时,这可能会导致修改或删除文件时出现问题。 你可能会看到如下错误消息:

  • 进程无法访问该文件,因为该文件正由另一个进程使用。
  • 无法完成该操作,因为该文件在另一个程序中打开。
  • 文档已锁定以供其他用户编辑。
  • 指定的资源被 SMB 客户端标记为要删除。

此问题的解决方法取决于这是由孤立的文件句柄还是租约引起的。

注意

应用程序使用 REST 租约来防止文件被删除或修改。 在中断任何租约之前,应确定哪个应用程序正在获取它们。 否则,可能会中断应用程序行为。

原因 1

文件句柄阻止修改或删除文件/目录。 可以使用 Get-AzStorageFileHandle PowerShell cmdlet 查看打开的句柄。

如果所有 SMB 客户端都关闭了文件/目录上的打开句柄,并且问题继续出现,则可以强制关闭文件句柄。

解决方案 1

若要强制关闭文件句柄,请使用 Close-AzStorageFileHandle PowerShell cmdlet。

注意

Get-AzStorageFileHandleClose-AzStorageFileHandle cmdlet 包含在 Az PowerShell 模块 2.4 或更高版本中。 若要安装最新的 Az PowerShell 模块,请参阅安装 Azure PowerShell 模块

原因 2

文件租约阻止修改或删除文件。 如果文件具有使用以下 PowerShell 命令的文件租约,则可以检查。 将 、<storage-account><file-share><path-to-file> 替换为<resource-group>环境的相应值。

# Set variables 
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"
$fileShareName = "<file-share>"
$fileForLease = "<path-to-file>"

# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
        -ResourceGroupName $resourceGroupName `
        -Name $storageAccountName

# Get reference to file
$file = Get-AzStorageFile `
        -Context $storageAccount.Context `
        -ShareName $fileShareName `
        -Path $fileForLease

$fileClient = $file.ShareFileClient

# Check if the file has a file lease
$fileClient.GetProperties().Value

如果文件具有租约,则返回的对象应包含以下属性:

LeaseDuration         : Infinite
LeaseState            : Leased
LeaseStatus           : Locked

解决方案 2

若要从文件中删除租约,可以释放租约或中断租约。 若要释放租约,需要租约的 LeaseId,这是在创建租约时设置的。 不需要 LeaseId 即可中断租约。

以下示例演示如何中断原因 2 中指示的文件的租约, (此示例继续使用原因 2) 中的 PowerShell 变量:

$leaseClient = [Azure.Storage.Files.Shares.Specialized.ShareLeaseClient]::new($fileClient)
$leaseClient.Break() | Out-Null

无法在 Linux 上装载 Azure 文件共享快照

尝试在 Linux 上装载 Azure 文件共享 (快照时出现“装载错误 22) :参数无效”

原因

snapshot如果命令的选项mount未以可识别的格式传递,该mount命令可能会失败并出现此错误。 若要确认,检查内核日志消息 (dmesg) ,dmesg 将显示日志条目,例如 cifs: Bad value for 'snapshot'

解决方案

确保以正确的格式传递 snapshot 命令的选项 mount 。 请参阅 mount.cifs 手动页 (例如 man mount.cifs) 。 常见错误是以错误格式传递 GMT 时间戳,例如使用连字符或冒号来代替句点。 有关详细信息,请参阅装载文件共享快照

尝试在 Linux 上装载 Azure 文件共享快照时出现“快照令牌错误”

原因

如果从 开始@GMT传递快照mount选项,但格式仍然错误, (例如使用连字符和冒号而不是句点) ,则mount命令可能会失败并出现此错误。

解决方案

确保以正确的格式传递 GMT 时间戳,即 @GMT-year.month.day-hour.minutes.seconds。 有关详细信息,请参阅装载文件共享快照

尝试装载 Azure 文件共享时出现“装载错误 (2) :无此类文件或目录”快照

原因

如果尝试装载的快照不存在,该mount命令可能会失败并出现此错误。 若要确认,检查内核日志消息 (dmesg) ,dmesg 将显示日志条目,例如:

[Mon Dec 12 10:34:09 2022] CIFS: Attempting to mount \\snapshottestlinux.file.core.windows.net\snapshot-test-share1
[Mon Dec 12 10:34:09 2022] CIFS: VFS: cifs_mount failed w/return code = -2

解决方案

确保尝试装载的快照存在。 有关如何列出给定 Azure 文件共享的可用快照的详细信息,请参阅装载文件共享快照

打开句柄过多的磁盘配额或网络错误

根据用于访问 Azure 文件共享的客户端操作系统,选择“Windows 或 Linux”选项卡。

错误 1816 - 没有足够的配额可用于处理此命令

原因

当达到 Azure 文件共享上的文件或目录允许的并发打开句柄上限时,会发生错误 1816。 有关详细信息,请参阅Azure 文件存储缩放目标

解决方案

通过关闭一些句柄,然后重试,减少并发打开句柄的数量。 有关详细信息,请参阅Microsoft Azure 存储性能和可伸缩性清单

若要查看文件共享、目录或文件的打开句柄,请使用 Get-AzStorageFileHandle PowerShell cmdlet。

若要关闭文件共享、目录或文件的打开句柄,请使用 Close-AzStorageFileHandle PowerShell cmdlet。

注意

Get-AzStorageFileHandleClose-AzStorageFileHandle cmdlet 包含在 Az PowerShell 模块 2.4 或更高版本中。 若要安装最新的 Az PowerShell 模块,请参阅安装 Azure PowerShell 模块

对句柄执行任何操作时,ERROR_UNEXP_NET_ERR (59)

原因

如果长时间缓存/保留大量打开的句柄,可能会由于限制原因看到此服务器端故障。 当客户端缓存大量句柄时,其中许多句柄可以同时进入重新连接阶段,从而在服务器上生成需要限制的队列。 用于重新连接的后端的重试逻辑和限制花费的时间比客户端的超时时间长。 这种情况表现为客户端无法使用现有句柄执行任何操作,所有操作都失败,ERROR_UNEXP_NET_ERR (59) 。

此外,在边缘情况下,客户端句柄与服务器断开连接 (例如,网络中断持续几分钟,) 可能导致此错误。

解决方案

不要缓存大量句柄。 关闭句柄,然后重试。 使用 Get-AzStorageFileHandleClose-AzStorageFileHandle PowerShell cmdlet 查看/关闭打开的句柄。

如果使用 Azure 文件共享来存储大型虚拟桌面部署的配置文件容器或磁盘映像,或者对文件、目录和/或根目录打开句柄的其他工作负荷,则可能达到并发打开句柄 的上限 。 在这种情况下,请使用其他 Azure 文件共享并在共享之间分发容器或映像。

错误“你正在将文件复制到不支持加密的目标”

通过网络复制文件时,该文件在源计算机上解密,以纯文本形式传输,并在目标处重新加密。 但是,在尝试复制加密文件时,可能会看到以下错误:“你正在将文件复制到不支持加密的目标。”

原因

如果使用加密文件系统 (EFS) ,则可能会出现此问题。 BitLocker 加密文件可以复制到Azure 文件存储。 但是,Azure 文件存储不支持 NTFS EFS。

解决方法

若要通过网络复制文件,必须先对其进行解密。 请使用以下方法之一:

  • 使用 copy /d 命令。 它允许在目标处将加密文件保存为解密文件。
  • 设置以下注册表项:
    • Path = HKLM\Software\Policies\Microsoft\Windows\System
    • 值类型 = DWORD
    • Name = CopyFileAllowDecryptedRemoteDestination
    • 值 = 1

请注意,设置注册表项会影响对网络共享执行的所有复制操作。

Error ConditionHeadersNotSupported from a Web Application using Azure 文件存储 from Browser

通过使用条件标头的应用程序(如 Web 浏览器)访问托管在 Azure 文件存储 中的内容时,将发生 ConditionHeadersNotSupported 错误。 错误指出不支持条件标头。

显示 ConditionHeadersNotSupported 错误消息的屏幕截图。

原因

尚不支持条件标头。 每次访问文件时,实现它们的应用程序都需要请求完整文件。

解决方法

上传新文件时, CacheControl 属性默认为 无缓存。 若要强制应用程序每次请求文件,文件的 CacheControl 属性需要从 no-cache 更新为 no-cache、no-store、must-revalidate。 可以使用 Azure 存储资源管理器 来实现此目的。

显示 CacheControl 文件属性的 Screeshot。

另请参阅

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。