0 votes

Obtention d'une erreur du serveur SQL lors de l'accès au site web en utilisant l'URL distante plutôt que l'hôte local.

Échec de la génération d'une instance utilisateur de SQL Server en raison de l'impossibilité de récupérer le chemin d'accès aux données de l'application locale de l'utilisateur. Veuillez vous assurer que l'utilisateur dispose d'un profil d'utilisateur local sur l'ordinateur. La connexion sera fermée.

Voici l'erreur que j'obtiens. Si j'essaie d'accéder au site web en utilisant l'hôte local, cela fonctionne bien. Mais lorsque je l'utilise via l'URL distante, j'obtiens cette erreur.

J'ai l'impression qu'il y a un problème avec mon fichier web.config.

La chaîne de connexion que j'utilise

Dans le code C#.....

        SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Thesis_Database.mdf;Integrated Security=True;User Instance=True");

Aidez-nous.... SqlDataReader rdr = null ;

0voto

Mikael Svenson Points 18243

Ceci est lié à l'usurpation d'identité.

L'utilisateur qui accède à votre page doit avoir un compte d'utilisateur local sur la machine, et comme vous avez "User Instance=True", une copie de la base de données principale sera copiée :

C:\Documents and Settings\<Username>\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS

Et d'après l'erreur, il semble que l'utilisateur avec lequel vous accédez à la page web n'ait pas de compte.

Se pourrait-il que vous n'exécutiez pas l'impersonnation sur le serveur web, de sorte qu'il essaie en fait de monter l'instance de la base de données en tant qu'utilisateur AppPool ?

0voto

chriz Points 101

J'ai dû ajouter une nouvelle ligne à ma chaîne de connexion dans le fichier web.config pour résoudre le problème :


> <connectionStrings>   add this to your
> web.confog file.   <remove
> name="LocalSqlServer"/>      <add
> name="LocalSqlServer"
> connectionString="Data
> Source=.\SQLExpress;Integrated
> Security=True;User
> Instance=True;AttachDBFilename=|DataDirectory|aspnetdb.mdf"/>

Dans le pool d'applications IIS, j'ai utilisé un compte qui a un profil d'utilisateur local (le système local est un exemple), mais cela pourrait créer une faille de sécurité dans votre système.

Allez dans le gestionnaire iis et dans l'onglet Pool d'applications. Sur chaque instance de pool d'applications, cliquez sur Paramètres avancés et changez le profil utilisateur en "Système local". Cela devrait résoudre le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X