Question

Comment puis-je obtenir deux sites ASP.NET distincts, dans ce cas un site Web à l'aide de l'entité Framework et du service Web, pour utiliser la même base de données locale MDF & LDF?

J'ai regardé autour de moi et je pense que ce type de DB local s'appelle une instance utilisateur - au moins leur façon de l'utiliser actuellement. Je ne savais pas si ça fonctionnerait ou non avant d'avoir trouvé les informations ci-dessous du Bibliothèque MSDN Et maintenant, je ne sais vraiment pas si cela fonctionnera.

Les scénarios d'instance utilisateur incluent:

...

Hébergement ASP.NET dédié à l'aide de l'authentification Windows. Une seule instance express SQL Server peut être hébergée sur un intranet. L'application se connecte à l'aide du compte Windows ASPNET, et non en utilisant une usurpation d'identité. Les instances utilisateur ne doivent pas être utilisées pour des scénarios d'hébergement tiers ou partagés où toutes les applications partageraient la même instance utilisateur et ne resteraient plus isolées les unes des autres.

Cela fonctionnera-t-il immédiatement sans aucune configuration supplémentaire? Lorsque j'essaie d'ajouter une base de données à chaque application successive, je reçois une erreur d'utilisation de fichier si autre chose utilise la base de données qui m'amène à croire que je ne peux pas le faire de cette façon. Cependant, si j'empêche la dB d'être utilisée, ajoutez-le, puis démarrez-le, semble pour bien fonctionner. Quelqu'un a-t-il un rassurance pour moi qu'il ne sera pas corrompu ou ne connaît-il pas d'erreurs en l'utilisant de cette façon?

De préférence, le MDF & LDF serait stocké dans le répertoire APP_DATA du site Web (| DataDirectory |). Si je le fais de cette façon, je ne pense pas pouvoir utiliser de manière fiable l'adressage relatif pour le service, sauf si je le mets dans un sous-répertoire pour le site, est-ce correct?

Éditer: J'utilise SQL Server Express car il s'agit d'une mission pour l'école, donc je dois à peu près l'utiliser. S'il existe un moyen sans instance utilisateur, j'essaierai de me passer.

Était-ce utile?

La solution

Vous ne pouvez pas utiliser User Instance pour ça. Cela permet à un seul client de se connecter à votre base de données. Lorsque vos deux applications utilisent les mêmes informations d'identification, vous obtenez l'erreur que vous décrivez. Lorsque vos deux applications utilisent des informations d'identification différentes, vous obtenez essentiellement deux instances distinctes (non plus ce que vous voulez).

En outre, les instances utilisateur ne sont prises en charge que sur SQL Server Express. Je ne sais pas à quoi ressemble votre environnement de production, mais il ne fonctionne probablement pas sur SQL Server Express?

Tu devrais utiliser AttachDBFilename Dans la chaîne de connexion de votre application Web pour pointer vers la base de données locale: AttachDBFilename=|DataDirectory|\MyDB.mdf.

Dans votre service Web, vous utilisez également AttachDBFilename Mais cela dépend de l'emplacement de déploiement du service Web où le pointer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top