发布时未发现 Azure SDK 存储程序集异常
Posted
技术标签:
【中文标题】发布时未发现 Azure SDK 存储程序集异常【英文标题】:Azure SDK Storage assembly not found exception when publishing 【发布时间】:2016-09-10 07:57:57 【问题描述】:我尝试使用云服务和 Azure SDK 2.9 将演示应用程序发布到 Windows Azure。在我的服务中,我有一个 Web 角色和一个 Worker 角色。两者都使用 Azure 存储。在本地主机(模拟器)上一切正常,但是当我尝试发布应用程序时,我在 Web 角色上收到以下错误:
未处理的异常:System.Runtime.Serialization.SerializationException, 详细信息:异常:无法找到程序集 'Microsoft.WindowsAzure.Storage, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf385)
在 Worker Role 项目中一切正常,它也在使用存储。
我尝试将 Web 角色转换为标准 Web 应用程序,一切正常,但我想在云应用程序上解决此问题。
我尝试过的:
在对 true 的引用中设置本地副本 将 .Net Framework 更改为 4.5.1 和 4.6(默认 4.5) 再次删除并添加了对存储的引用 通过 nuget 重新安装了所有库 随 Storage 7.0 和 6.2 发布 由 VS 和门户网站(包)发布 在 web.config 中添加了dependentAssembly在我的 VM 上,我检查了 bin 文件夹,Microsoft.WindowsAzure.Storage 存在。
有什么想法吗?
【问题讨论】:
我在 Github 上看到了同样的问题:github.com/Azure/azure-storage-net/issues/269。似乎其他人也遇到了类似的问题。你可能想在那里提出一个问题。 HTH。 【参考方案1】:两天后,我找到了解决该问题的方法。 在我的 WebRole.cs 我有这个:
public override bool OnStart()
var csa = CloudStorageAccount.Parse(RoleEnvironment
.GetConfigurationSettingValue("Credentials"));
var cqc = csa.CreateCloudQueueClient();
var inputQueue = cqc.GetQueueReference("inputqueue");
inputQueue.CreateIfNotExists();
var outputQueue = cqc.GetQueueReference("outputqueue");
outputQueue.CreateIfNotExists();
var ctc = csa.CreateCloudTableClient();
var ct = ctc.GetTableReference("last");
ct.CreateIfNotExists();
return base.OnStart();
当我将此初始化移动到其他地方时,例如到 RouteConfig.cs 一切正常。我不知道为什么,但从 WebRole 对存储的每次引用都会在发布到 Azure 后引发错误。 我希望这个解决方案有所帮助。
【讨论】:
以上是关于发布时未发现 Azure SDK 存储程序集异常的主要内容,如果未能解决你的问题,请参考以下文章
关闭 android 应用程序时未收到 Azure 推送通知
如何使用 Azure.Storage.Blobs 程序集对 Azure Blob 存储操作设置重试策略?