PROBLEM
Vous reçevez le message d'erreur en bas de cet article quand vous désirez accéder à une base de données de type "Microsoft SQL Server Compact Edition" SQLServerCE lors de l'ouverture de l'objet ConnectionString.Open() sur un serveur ASP.NET de type IIS
CAUSE
Vous n'avez pas le droit de "Traverse folder / Execute file" à la racine de la partition hébergant votre répertoire racine de votre serveur IIS (INETPUB) pour le compte ASP.NET
SOLUTION
- Allez dans les permissions de votre partition, pour exemple "E:\"
- Ajoutez le compte ASP.NET de votre serveur.
- Allez dans les propriété avancées de votre compte ASP.NET.
- Dans la liste déroulante "Appliquer sur :" ou "Apply onto : " choisissez :
FR : "Ce répertoire uniquement"
EN : "This folder only".
- Ne cochez dans la liste des cases à cocher uniquement :
FR : "Traversement du répertoire / exécuter les fichiers"
EN : "Traverse folder / Execute file"
- Appliquez les changements.
Normalement votre page fonctionne maintenant, si vous rencontrez encore le message d'erreur effectuer la même manipulation sur le répertoire temporaire du system "%TMP% ou %TEMP%"
Server Error in '[votre chemin]' Application.
Access to the database file is not allowed. [ File name = ]
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlServerCe.SqlCeException: Access to the database file is not allowed. [ File name = ]
Source Error:
Line 43:
Line 44: 'Open connection
Line 45: CS.Open()
Line 46: Finally
Source File: E:\Inetpub\xxxx\yyyy\zzzzz\Default.aspx.vb Line: 45
Stack Trace:
[SqlCeException: Access to the database file is not allowed. [ File name = ]] System.Data.SqlServerCe.SqlCeConnection.Open(Boolean silent) +1389
System.Data.SqlServerCe.SqlCeConnection.Open() +6 _Default.Page_Load(Object sender, EventArgs e) in E:\Inetpub\xxxx\yyyy\zzzzz\Default.aspx.vb:45
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061