关于RadCloudUpload控件依赖已弃用WindowsAzure.Storage包的技术咨询
RadCloudUpload 适配 Azure Blob 存储(.NET Framework 4.8)
能否继续使用弃用的 WindowsAzure.Storage 包?
- 短期可以使用,但不建议长期依赖。微软对该弃用包的安全支持持续到2024年10月,当前项目中使用不会立刻出现功能故障。但长期来看,后续可能面临Azure服务端API变更、.NET Framework版本升级带来的兼容性问题,建议逐步迁移到新SDK。
适配新 Azure.Storage.Blobs 包的方案
RadCloudUpload 默认绑定旧SDK,要切换到新包,必须自定义存储提供程序替代内置实现:
1. 安装依赖包
通过NuGet安装:
Azure.Storage.Blobs(稳定版)Telerik.Web.UI(适配.NET Framework 4.8的最新版)
2. 实现自定义存储提供类
继承RadCloudUploadProvider,用新Azure SDK重写上传/删除逻辑:
using System; using Telerik.Web.UI; using Azure.Storage.Blobs; using Azure.Storage.Blobs.Models; using System.Configuration; public class CustomAzureBlobProvider : RadCloudUploadProvider { private BlobContainerClient _containerClient; public override void Initialize() { string connStr = ConfigurationManager.AppSettings["AzureBlobConnStr"]; string container = ConfigurationManager.AppSettings["AzureBlobContainer"]; _containerClient = new BlobContainerClient(connStr, container); _containerClient.CreateIfNotExists(PublicAccessType.Blob); } public override string UploadFile(UploadedFile file) { var blobClient = _containerClient.GetBlobClient(file.GetName()); using (var stream = file.InputStream) { blobClient.Upload(stream, new BlobUploadOptions { HttpHeaders = new BlobHttpHeaders { ContentType = file.ContentType } }); } return blobClient.Uri.AbsoluteUri; } public override void DeleteFile(string fileUrl) { var blobClient = new BlobClient(new Uri(fileUrl)); blobClient.DeleteIfExists(); } // 按需重写GetUploadedFiles等其他方法 }
3. 配置控件使用自定义提供程序
在ASPX页面中指定自定义提供程序:
<telerik:RadCloudUpload ID="RadCloudUpload1" runat="server" ProviderType="CustomAzureBlobProvider" HttpHandlerUrl="~/Telerik.Web.UI.WebResource.axd"> </telerik:RadCloudUpload>
在Web.config中添加存储配置:
<appSettings> <add key="AzureBlobConnStr" value="你的Azure存储连接字符串"/> <add key="AzureBlobContainer" value="目标容器名称"/> </appSettings>
注意事项
- 自定义类的命名空间要正确,若不在根命名空间,需在
ProviderType中指定完整类名(如MyNamespace.CustomAzureBlobProvider)。 - 升级Telerik控件:部分新版本的RadCloudUpload已原生支持新Azure SDK,可优先尝试升级控件版本简化操作。
- 权限控制:确保存储连接字符串拥有Blob读写权限,推荐使用SAS令牌或最小权限的服务主体。
内容的提问来源于stack exchange,提问作者akshay bogar
相关产品推荐
相关产品推荐

