La façon correcte de supprimer et de recréer une table de stockage WIndows Azure = Erreur 409 Conflict - Code: TableBeingDeleted
Im vraiment nouveau dans le développement Windows Azure et ont une obligation de stocker des données dans un stockage windows azure table.
Ce tableau va vraiment n'existent pour fournir une fonction de recherche rapide mécanisme de certains fichiers qui sont situés sur le stockage azure drive.
Donc j'avais l'intention de remplissage de ce tableau au démarrage de l'application (c'est à dire dans une application web mondial démarrage de l'application)
Plutôt que d'essayer de maintenir ce tableau des changements les changements qui pourraient se produire sur le lecteur, tandis que l'application n'est pas en cours d'exécution. Ou que ce disque est juste un disque dur virtuel de ressources, nous pouvons occasionnellement télécharger un nouveau disque dur virtuel.
Donc, plutôt que le souci d'essayer de maintenir ce. il suffit que cette table de reconstruire à chaque démarrage de l'application.
J'ai commencé à mettre ensemble un peu de code pour vérifier si la table existe déjà , et si elle ne le supprimer et recréer une nouvelle table.
var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureStorage"].ConnectionString);
var tableClient = storageAccount.CreateCloudTableClient();
var rmsTable = tableClient.GetTableReference("ResourceManagerStorage");
rmsTable.DeleteIfExists();
rmsTable.Create();
Je m'attendais à ce que cela ne fonctionnerait pas. Et j'obtiens l'erreur suivante:
The remote server returned an error: (409) Conflict.
HTTP/1.1 409 Conflict
Cache-Control: no-cache
Transfer-Encoding: chunked
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: c6baf92e-de47-4a6d-82b3-4faec637a98c
x-ms-version: 2012-02-12
Date: Tue, 19 Mar 2013 17:26:25 GMT
166
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>TableBeingDeleted</code>
<message xml:lang="en-US">The specified table is being deleted. Try operation later.
RequestId:c6baf92e-de47-4a6d-82b3-4faec637a98c
Time:2013-03-19T17:26:26.2612698Z</message>
</error>
0
Quelle est la façon correcte de le faire? Est-il un événement qui peut être souscrite pour vous laisser savoir quand le tableau a été supprimé? D'autres suggestions sur la meilleure façon de mettre en œuvre cette?
source d'informationauteur Kramer00 | 2013-03-19
Vous devez vous connecter pour publier un commentaire.
De MSDN: "Notez que la suppression d'une table est susceptible de prendre au moins 40 secondes. Si une opération est tentée contre la table alors qu'il a été supprimé, le service renvoie le code d'état 409 (Conflit d'intérêts), avec d'autres informations d'erreur indiquant que le tableau est supprimé."
La seule façon de traiter ce problème est de créer une table avec un nom différent. Cela pourrait être aussi simple que l'ajout d'un timestamp ou le GUID de votre nom. Il suffit de faire attention à nettoyer votre poubelle.
Si vous avez besoin d'utiliser le même nom de table, vous pouvez utiliser une méthode d'extension:
AVERTISSEMENT! Soyez prudent lorsque vous utilisez cette approche, car il bloque le thread. Et il peut aller à la mort de la boucle si le service tiers (Azure) maintient la production de ces erreurs. La raison pourrait en être de verrouillage de table, à l'expiration de l'abonnement, le service de l'indisponibilité, etc.