发布时未找到Azure SDK存储程序集异常

时间:2016-05-14 01:33:54

标签: c# asp.net .net azure azure-storage

我尝试使用Cloud Service和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项目中,一切正常,它也在使用Storage。

我尝试将Web角色转换为标准Web应用程序,一切正常但我想在云应用程序上解决此问题。

我尝试了什么:

  • 在引用为真的
  • 中设置本地副本
  • 将.Net Framework更改为4.5.1和4.6(默认4.5)
  • 删除并再次添加对存储的引用
  • 通过nuget重新安装所有库
  • 与Storage 7.0和6.2一起发布
  • 由VS和门户网站(包)发布
  • 将dependentAssembly添加到web.config

在我的VM上,我检查了bin文件夹,Microsoft.WindowsAzure.Storage存在。

任何想法有什么不对?

1 个答案:

答案 0 :(得分: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后引发错误。 我希望这个解决方案有所帮助。