IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

MVC 4 Membership et SQL Express Local [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Points : 395
    Points
    395
    Par défaut MVC 4 Membership et SQL Express Local
    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.

    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>
    }
    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
     
    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.
    Mais je ne comprends pas du tout pourquoi il me parle d'un SQL Server local ?!

    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 :

    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 d’informations 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>
    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.
    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.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Points : 395
    Points
    395
    Par défaut
    Personne n'aurait une petite idée ? Mon fichier de config à t il l'air correct ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Points : 395
    Points
    395
    Par défaut
    Après pas mal de recherche, j'ai finis par tombé sur ce post http://stackoverflow.com/questions/1...4-app-to-azure
    La réponse donnée fonctionne et règle mon problème.
    Le problème vient, à priori, du fait qu'on demande une connexion à la base pour tester le rôle de l'utilisateur, avant que l'initialisation du SimpleMembership ne soit fait.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR 10] SQL Expression Field : Demande d'exemple ?
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 19/06/2010, 14h36
  2. [SQL Express]Configuration Manager
    Par titoux_fr dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/02/2006, 16h22
  3. SQL Express Menager 2005
    Par Paulinho dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/11/2005, 12h41
  4. [java/jdbc]SIMPLE REQUETE SQL: expression abssente
    Par b_52globemaster dans le forum JDBC
    Réponses: 6
    Dernier message: 16/08/2005, 11h38
  5. MS SQL Express 2005... Connection de ExpressManager / Server
    Par papouAlain dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 18/03/2005, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo