2016-05-14 57 views
3

我尝试使用Cloud Service和Azure SDK 2.9将演示应用程序发布到Windows Azure。在我的服务中,我有一个Web角色和一个工作者角色。两者都使用Azure存储。一切工作在本地托管(模拟器)的罚款,但是当我尝试发布的应用程序,我得到Web角色出现以下错误:发布Azure SDK存储程序集时未发现异常

未处理的异常:System.Runtime.Serialization.SerializationException,
详细信息:异常:无法找到程序集'Microsoft.WindowsAzure.Storage,Version = 7.0.0.0,Culture = neutral,PublicKeyToken = 31bf385)

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

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

我已经试过什么:

  • 在引用设置本地副本真
  • 改变.Net框架4.5.1和4.6(默认4.5)
  • 移除并再次添加存储参考
  • 通过重新安装所有的Nu​​Get库
  • 出版了存储7.0和6.2
  • 通过VS和门户(包)公布
  • 添加dependentAssembly到web.config中

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

任何想法是什么错?

+0

我在Github上看到同样的问题:https://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一切正常。我不知道为什么,但在发布到Azure之后,每个对WebRole存储的引用都会引发错误。 我希望这个解决方案有帮助。