У меня очень странная проблема с использованием Azure Table Storage. У меня есть проект .NET 4.5 в Visual Studio 2012, где я занимаюсь всеми функциями хранилища таблиц Azure. На этот проект /dll ссылаются два других проекта: мой веб-сайт MVC и моя роль Azure Worker. (Я работаю под эмуляторами Azure на своей машине, но это также происходит, когда я развертываю его в облаке)
У меня есть следующая функция, вызываемая при сохранении или извлечении записи:
internal static CloudTable GetTable(CloudStorageAccount storageAccount, string tableReference)
{
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference(tableReference);
table.CreateIfNotExists();
return tableClient.GetTableReference(table.Name);
}
На моем веб-сайте MVC у меня есть функция, которая сохранит запись в таблице хранения Azure, а затем в моей роли Azure Worker появится служба, которая будет читать запись.
Таким образом, обе используют одну и ту же DLL для хранения и извлечения, однако у моего проекта MVC нет проблем с сохранением записи, но в моей службе роли Azure Worker при попытке получить запись генерирует исключение при попытке выполнить "таблицу". CreateIfNotExists();".
Не удалось загрузить файл или сборку 'Microsoft.Data.OData, Версия = 5.2.0.0, Культура = нейтраль, PublicKeyToken = 31bf3856ad364e35 'или одной из его зависимостей. Установленное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
Я уже сделал следующее:
- Обновлены все пакеты NuGet с уровня решения до последних версий
- Я просмотрел все ссылки на проект, чтобы убедиться, что там нет старой dll или предыдущих версий, в частности System.Spatial, Microsoft.WindowsAzure.Configuration, Microsoft.WindowsAzure.ServiceRuntime и Microsoft.ServiceBus, Microsoft.WindowsAzure.Storage, Microsoft.Data.Edm и Microsoft.Data.ODatali >
- Я даже создал новый проект Cloud Service и WorkerRole с нуля, чтобы убедиться, что он не работает в текущем проекте WorkerRole.
Я не вернул dll обратно в 5.2, так как у меня было слишком много проблем в других проектах, где я использую функции, характерные для 5.3.
В настоящее время я запускаю всю dll на 5.5.
Когда я запустил утилиту AsmSpy.exe, найденную здесь, я получаю следующий результат: я не уверен на 100%, как интерпретировать.
> Reference: Microsoft.Data.Edm
> 5.5.0.0 by Microsoft.Data.OData
> 5.5.0.0 by Microsoft.Data.Services.Client
> 5.5.0.0 by Microsoft.WindowsAzure.ActiveDirectory.GraphHelper.2013_04_05
> Reference: System.Spatial
> 5.5.0.0 by Microsoft.Data.OData
> 5.5.0.0 by Microsoft.Data.Services.Client Reference: Microsoft.Data.OData
> 5.5.0.0 by Microsoft.Data.Services.Client
> 5.2.0.0 by Microsoft.WindowsAzure.Storage <-- THIS SEEMS TO BE THE ONE THAT IS CAUSING ISSUES
Как я это интерпретирую, это то, что dll Microsoft.WindowsAzure.Storage ссылается на V 5.2.0.0 dll Microsoft.Data.OData, но как я могу это исправить, если это проблема? Согласно документации, которую я видел в dll Storage, предполагается, что она должна ссылаться на 5.4 и выше, а не на 5.2...?
Любая помощь будет принята с благодарностью.