【问题标题】:Sysytem.EntryPointNotFoundException in Microsoft.Windows.Azurestorage.dll version 6.0.0Microsoft.Windowsazure Storage.dll 版本 6.0.0 中的 System.EntryPointNotFoundException
【发布时间】:2015-10-23 13:54:48
【问题描述】:

我正在使用 Microsoft.WindowsAzure.Storage.dll 版本 6.0.0 来处理 Azure 表存储。在表中添加新条目时,出现以下错误。

代码行抛出错误:

var operation = TableOperation.InsertOrReplace(entity);

await this.CloudTable.ExecuteAsync(operation).ConfigureAwait(false); -> // 抛出错误

实体的类型为 TableEntity

我引用了以下程序集:

<package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net451" />
<package id="Microsoft.Data.Edm" version="5.6.4" targetFramework="net451" />
<package id="Microsoft.Data.OData" version="5.6.4" targetFramework="net451" />
<package id="Microsoft.Data.Services.Client" version="5.6.4" targetFramework="net451" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
<package id="System.Spatial" version="5.6.4" targetFramework="net451" />
<package id="WindowsAzure.Storage" version="6.0.0" targetFramework="net451" />

注意:代码在我的本地机器上运行时执行良好,但在我们不拥有的不同环境中运行时会引发上述异常。 (不同的机器托管在其他地方,我们也无权访问这些机器)

错误:

错误:System.EntryPointNotFoundException:入口点不是 找到。#R##N# 在 Microsoft.WindowsAzure.Storage.Table.ITableEntity.get_PartitionKey()#R##N# 在 Microsoft.WindowsAzure.Storage.Table.TableOperation.GenerateCMDForOperation(CloudTableClient 客户端、CloudTable 表、TableRequestOptions modifiedOptions)#R##N#
在 Microsoft.WindowsAzure.Storage.Table.TableOperation.BeginExecute(CloudTableClient 客户端,CloudTable 表,TableRequestOptions requestOptions, OperationContext operationContext、AsyncCallback 回调、Object 状态)#R##N# 在 Microsoft.WindowsAzure.Storage.Table.CloudTable.BeginExecute(TableOperation 操作,TableRequestOptions requestOptions,OperationContext operationContext,AsyncCallback 回调,对象状态)#R##N# at Microsoft.WindowsAzure.Storage.Table.CloudTable.BeginExecute(TableOperation 操作,AsyncCallback 回调,对象状态)#R##N# at Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions.TaskFromApm[T1,TResult](Func 4 beginMethod,Func 2 endMethod,T1 arg1,CancellationToken 取消令牌)#R##N# at Microsoft.WindowsAzure.Storage.Table.CloudTable.ExecuteAsync(TableOperation 操作,CancellationToken cancelToken)#R##N# at Microsoft.WindowsAzure.Storage.Table.CloudTable.ExecuteAsync(TableOperation 操作)#R##N# 在 Microsoft.OnlinePublishing.Retry.TaskRetryer 2.DoAction()#R##N#--- 结束 来自先前抛出异常的位置的堆栈跟踪 ---#R##N# 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)#R##N# 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)#R##N# 在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable 1.ConfiguredTaskAwaiter.GetResult()#R##N# 在 Microsoft.OnlinePublishing.Ingestion.Common.Cache.CloudTableManager.d__6 1.MoveNext()

【问题讨论】:

  • 这是一个 DLL Hell 问题。如果您无法对部署在这些机器上的内容做任何事情,那么除非您使用该机器上完全相同版本的 DLL 进行定位和测试,否则它不会变得更好。有人可以告诉你它们是什么,而不是我们。
  • 是的,我知道 :) 在这里发布此问题的目的是了解哪个 DLL 可能导致此问题。如您所见,堆栈跟踪。我使用 ILSpy 检查代码,但没有发现任何东西。可能是来自 Windows Azure Stroage 的人可以发表评论,或者是更熟悉或面临这种情况的人。我不知道为什么有人要关闭这个
  • 我会问他们目标机器上的 Windows.Azure.Storage 是什么版本。或者,您是否在部署的文件中包含该 dll?

标签: azure-storage azure-table-storage entrypointnotfoundexcept


【解决方案1】:

此异常表明在定义您的 TableEntity 类型的程序集和对其进行操作的程序集之间存在引用程序集“Microsoft.WindowsAzure.Storage.dll”的版本不匹配。

定义 TableEntity 类型的程序集引用了哪个版本的“Microsoft.WindowsAzure.Storage.dll”?

【讨论】:

  • 定义 TableEntity 的程序集引用版本“6.0.0”,目标框架为 4.5.1
  • 我最初错过了 Robin 的问题,您能否检查目标计算机上的 Windows.Azure.Storage 程序集的版本以及您是否将其包含在部署的文件中?此外,是否有多个程序集在它们之间传递 TableEntity 对象,您是否为这些程序集配置了任何绑定重定向?
猜你喜欢
  • 2022-07-23
  • 1970-01-01
  • 2016-05-16
  • 2022-08-17
  • 2021-09-15
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 2021-08-25
相关资源
最近更新 更多