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



我尝试使用云服务和Azure SDK 2.9将演示应用程序发布到Windows Azure。在我的服务中,我有一个Web角色和一个Worker角色。两者都使用Azure存储。在本地主机(Emulator)上一切都很好,但当我尝试发布应用程序时,我在Web角色上遇到以下错误:

未处理的异常:System.Runtime.Serialization.Serialization异常,
详细信息:异常:找不到程序集"Microsoft.WindowsAzure.Storage,版本=7.0.0.0,区域性=中性,PublicKeyToken=31bf385)

在Worker Role项目中一切正常,它也在使用Storage。

我试图将Web角色转换为标准的Web应用程序,一切都很好,但我想在云应用程序上解决这个问题。

我尝试过的:

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

在我的虚拟机上,我检查了bin文件夹Microsoft.WindowsAzure.Storage是否存在。

有什么想法吗?

两天后,我找到了这个问题的解决方案。在我的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后都会引发错误。我希望这个解决方案能有所帮助。

最新更新