Telerik AJAX 无法上传文件

Telerik AJAX can not uplaod files

Telerik 从 Telerik AJAX Manager v2015.1.401.45 更新到 Telerik AJAX Manager v2020.2.512.45 无法上传文件。总是错误如:

[CryptographicException: The cryptographic operation has failed!]
   Telerik.Web.UI.CryptoExceptionThrower.ThrowGenericCryptoException() +46
   Telerik.Web.UI.CryptoExceptionThrower.ThrowIfFails(Func`1 function) +46
   Telerik.Web.UI.CryptoService.CheckWhitelistTypes(Type type, String allowedCustomMetaTypes, String uploadMetaDataFullName) +116
   Telerik.Web.UI.AsyncUploadHandler.GetConfiguration(String rawData) +163
   Telerik.Web.UI.AsyncUploadHandler.EnsureSetup() +148
   Telerik.Web.UI.AsyncUploadHandler.ProcessRequest(HttpContext context) +140
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +195
   System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +50
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +73

错误记录在产品文档中 https://docs.telerik.com/devtools/aspnet-ajax/knowledge-base/asyncupload-the-cryptographic-operation-has-failed-error-after-upgrade

说明 在 R1 2020 中,默认启用自定义元数据 classes(上传配置)白名单 - 白名单自定义元数据类型。如果您的应用程序使用此类配置,则需要将它们添加到 web.config.

中的 Telerik.Upload.AllowedCustomMetaDataTypes 键

您需要添加 class 的完全限定名称,否则您将得到 The cryptographic operation has failed!尝试上传时出错。

web.config

<appSettings>
    <add key="Telerik.Upload.AllowedCustomMetaDataTypes" value="SomeNameSpace.SampleAsyncUploadConfiguration;SomeOtherNameSpace.OtherAsyncUploadConfiguration" />
</appSettings>

其他错误原因 如果添加 AllowedCustomMetaDataTypes 密钥或不使用自定义配置文件无法修复错误,请确保您已设置必要的加密密钥:

配置加密密钥 配置哈希键 Telerik.Web.UI.DialogParametersEncryptionKey,如果使用 RadEditor 对话框

解决方案 解决方案是将所有自定义配置 classes 添加到 Telerik.Upload.AllowedCustomMetaDataTypes 键中,以分号 ; 分隔。要找出完全限定的名称,您可以使用以下在标签中列出项目的方法。

ASP.NET

<asp:Label Text="Label1" ID="Label1" runat="server" />

C#

protected void Page_Load(object sender, EventArgs e)
{
    Label1.Text = typeof(MySampleAsyncUploadConfiguration).AssemblyQualifiedName.Split(',')[0];
}

为方便起见,您可以从下面的 link 下载实施建议方法的 AsyncUploadGetCustomMetaDataTypes 示例项目。要使其可运行,请将 Telerik.Web.UI.dll 程序集放在项目的 bin 文件夹中。

AsyncUploadGetCustomMetaDataTypes.zip。 在该项目中,您会发现两个页面有两个不同的自定义处理程序。如您所见,没有自定义配置的自定义处理程序不需要向 Telerik.Upload.AllowedCustomMetaDataTypes 键添加任何内容。