You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:26:18