Bonjour à tous,
J'ai débuté la réalisation d'un site en partant du modèle de base MVC 4 de visual studio 2012. La gestion des utilisateurs et de droits est donc natif à la solution.
Jusqu'à présent, j'ai réussi à rajouter des champs spécifiques à ma table utilisateur et à modifier le formulaire de création d'un utilisateur pour renseigner ces champs.
Je travail à l'aide d'un SQL Server 2012.
J'ai voulu apporter une modification dans la vue qui génère le lien vers le formulaire de connexion, ou le message de bienvenue et le lien vers le formulaire de modification des infos d'un utilisateur.
J'ai donc ajouté un test if, afin de connaître le rôle utilisé par l'utilisateur et renvoyé un lien différent en fonction de ce rôle.
Depuis que j'ai rajouté ce "if (User.IsInRole("Administrator")" j'ai l'erreur suivante dès le lancement de mon site :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 @if (Request.IsAuthenticated) { if (User.IsInRole("Administrator")) { <text> @Html.ActionLink("Administration", "Index", "Gestion") </text> } else { <text> Bonjour, @Html.ActionLink(User.Identity.Name, "Manage", "Account", routeValues: null, htmlAttributes: new { @class = "username", title = "Manage" })! @using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" })) { @Html.AntiForgeryToken() <a href="javascript:document.getElementById('logoutForm').submit()">Se déconnecter</a> } </text> } } else { <ul> <li>@Html.ActionLink("S'inscrire", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li> <li>@Html.ActionLink("Se connecter", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li> </ul> }
Mais je ne comprends pas du tout pourquoi il me parle d'un SQL Server local ?!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Erreur lors de la création automatique du fichier de base de données SQLExpress: La chaîne de connexion utilise un emplacement de base de données dans le répertoire App_Data de l'application pour spécifier une instance SQL Server Express locale. Ayant déterminé qu'elle n'existait pas, le fournisseur a tenté de créer automatiquement la base de données des services d'application. Les conditions de configuration requises suivantes sont nécessaires pour vérifier correctement l'existence de la base de données des services d'application et créer automatiquement cette base de données : Si l'application s'exécute sur Windows 7 ou sur Windows Server 2008 R2, des étapes de configuration particulières sont nécessaires pour activer la création automatique de la base de données du fournisseur. Des informations supplémentaires sont disponibles à l'adresse : http://go.microsoft.com/fwlink/?LinkId=160102. Si le répertoire App_Data de l'application n'existe pas déjà, le compte de serveur Web doit bénéficier de droits d'accès en lecture et en écriture au répertoire de l'application. Cette condition est nécessaire puisque le compte de serveur Web créera automatiquement le répertoire App_Data s'il n'existe pas déjà. Si le répertoire App_Data de l'application existe déjà, le compte de serveur Web a seulement besoin d'un accès en lecture et en écriture à ce répertoire. Cette condition est nécessaire puisque le compte de serveur Web tente de vérifier si la base de données SQL Server Express existe déjà dans le répertoire App_Data de l'application. Si l'accès en lecture au répertoire App_Data du compte de serveur Web est supprimé, le fournisseur ne pourra pas correctement déterminer si la base de données SQL Server Express existe déjà. Toute tentative du fournisseur pour créer un double d'une base de données existante se soldera par une erreur. L'accès en écriture est requis, car les informations d'identification du compte de serveur Web sont utilisées lors de la création de la base de données. SQL Server Express doit être installé sur l'ordinateur. L'identité de processus du compte de serveur Web doit avoir un profil utilisateur local. Consultez le fichier readme pour plus d'informations sur la création d'un profil utilisateur local pour les comptes d'ordinateur et les comptes de domaine.
J'ai fais le tour de mon fichier de config et j'ai vu que le "defaultconnectionfactory" d'entityframework était pour une config local. J'ai donc modifié pour lui dire d'utiliser le serveur distant mais rien n'y fait, j'ai toujours la même erreur
Je vous met le contenu de mon fichier de config actuel :
Juste pour être bien précis, si je retire ce test "if", le site marche et je peux créer de nouveaux utilisateurs à l'aide du formulaire. Et je vois bien ces infos dans ma base sur le SQL Server distant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 <?xml version="1.0" encoding="utf-8"?> <!-- Pour plus dinformations sur la configuration de votre application ASP.NET, consultez la page http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <connectionStrings> <add name="MvcEntities" connectionString="Data Source=XX.XX.XX.XX;Network Library=DBMSSOCN;Initial Catalog=OnlineStore;User ID=USER;Password=PASSWORD;" providerName="System.Data.SqlClient" /> </connectionStrings> <appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings> <system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> <authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" /> </authentication> <pages> <namespaces> <add namespace="System.Web.Helpers" /> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization" /> <add namespace="System.Web.Routing" /> <add namespace="System.Web.WebPages" /> </namespaces> </pages> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <handlers> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> <parameters> <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True" /> </parameters> </defaultConnectionFactory> </entityFramework> </configuration>
Le fichier de config est, à la chaine de connexion près, celui généré par défaut par VS2012.
Si quelqu'un à une idée
Merci d'avance.
Partager