本地可上传文件至Azure Blob,部署为Azure Web App时失败求助
问题分析与解决办法
这个Name or service not known错误核心是Azure Web App无法解析你的Blob存储账户域名,导致连接服务失败。下面是一步步排查和解决的思路:
1. 确认存储账户名称无错误
- 代码里的
myaccount必须和Azure门户中的存储账户名完全一致,注意存储账户名仅支持小写字母+数字,别搞混大小写或输入错误。 - 直接从Azure存储账户“概述”页面复制Blob服务完整端点(比如
https://myaccount.blob.core.windows.net),替换代码里的域名部分,避免手动输入出错。
2. 检查Web App的网络配置
- 如果Web App开启了虚拟网络集成或使用了专用端点:
- 若用专用端点,需确认Blob存储的专用端点已关联到Web App所在虚拟网络,且专用DNS区域配置正确,保证Web App能解析专用端点域名。
- 若Web App处于隔离网络环境,检查防火墙规则是否阻止了出站访问443端口,或是否有限制DNS解析的规则。
- 未使用虚拟网络的话,将Web App的出站IP添加到Blob存储防火墙白名单:
- 在Web App的“网络”>“出站IP地址”中复制所有IP,到Blob存储账户的“网络”>“防火墙和虚拟网络”页面,把这些IP加入允许列表。
3. 验证连接字符串正确性
- 不要在代码中硬编码连接字符串,部署到Web App后,通过应用程序设置配置:
- 从Azure存储账户“访问密钥”页面复制标准连接字符串,粘贴到Web App的“配置”>“应用程序设置”中,确保格式正确,例如:
DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=xxx;EndpointSuffix=core.windows.net - 通过
IConfiguration读取该连接字符串,保证部署环境和本地使用的是同一个正确字符串。
- 从Azure存储账户“访问密钥”页面复制标准连接字符串,粘贴到Web App的“配置”>“应用程序设置”中,确保格式正确,例如:
4. 排查DNS解析问题
- 使用Web App自带诊断工具检测:
- 进入Azure门户的Web App页面,打开“诊断并解决问题”,搜索“DNS解析”相关诊断项,运行检测查看能否正常解析
myaccount.blob.core.windows.net。
- 进入Azure门户的Web App页面,打开“诊断并解决问题”,搜索“DNS解析”相关诊断项,运行检测查看能否正常解析
- 若使用自定义DNS服务器,需确认它能解析Azure存储域名,不行就换回Azure默认DNS尝试。
5. 临时调整重试策略(缓解问题)
虽然根源是DNS,但可以先调整重试策略,避免快速耗尽重试次数:
var blobClientOptions = new BlobClientOptions { Retry = { Delay = TimeSpan.FromSeconds(2), MaxDelay = TimeSpan.FromSeconds(10), MaxRetries = 3, Mode = RetryMode.Exponential } }; var blobServiceClient = new BlobServiceClient(connectionString, blobClientOptions);
内容的提问来源于stack exchange,提问作者onder
相关产品推荐
相关产品推荐

