A Propos de l'auteur

Name of author Bruno Raby
Je suis un passionné de développement logiciel et j'ai trouvé le projet BlogEngine.NET superbe. J'ai créé ce blog pour apporter ma contribution au développement des applications webs et des différents StarterKits.

Ecrivez moi Send mail

Calendrier

<<  May 2012  >>
MoTuWeThFrSaSu
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar

Recent comments

Authors

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012

Sign in

Créer un base SQL Server ASPNETDB avec Visual Studio 2010

by Bruno 3/8/2011 10:46:00 AM

Vous aurez remarqué comme moi que tous les exemples de développement d'application ASP.NET Visual Studio 2010, ne possèdent pas de base de données SQL Server ASPNETDB.MDF et pourtant la plus part de ces applications possèdent le code nécessaire à la registration à l'authentification et la gestion des utilisateurs et de leur rôles.

Si vous vous souvenez dans VS 2005, vous utilisiez l'utilitaire aspnet_regsql depuis la console de commandes VS pour créer une base ASPNETDB afin de gérer vos utilisateurs.

VS 2010 Beta 2: where is the Visual Studio command prompt?

Aucunement la peine de passer par aspnet_regsql, il faut simplement utiliser "ASP.NET Configuration" qui ne se trouve plus dans le menu Tools mais dans la barre de boutons au dessus de l'explorateur de solutions. Il vous faut remarquer l'îcone de la terre avec le marteau sur le côté gauche.

En cliquant sur ce bouton l'application web : "ASP.Net Web Application Administration" se lance en configuration de votre application.

Cliquez sur "Security" puis "Use the security Setup Wizard to configure security step by step." à la fin du wizard les fichiers :

ASPNETDB.MDF

et

aspnetdb_log.ldf

auront été créés dans le répertoire : \App_Data

Il ne vous reste plus qu'à les inclure ou non dans votre solution.

Have fun

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

Applications Webs | ASP.NET

LINQ to DataSet

by Bruno 6/10/2009 5:16:00 PM

Je veux réaliser une jointure dans le code.

J'ai conservé la base ASPNETDB pour la gestion de tous les utilisateurs de la communauté, leurs authentification par MemberShipUser SQL provider.

Pour les besoins de mon application, j'ai une Base de Données avec une table qui gérent les infos spécifiques de mes Membres ce que l'on ne trouve pas dans ASPNETDB.

La jointure entre les deux tables se fait par le MembreGUID d'un côté et par le UserId dans ASPNETDB.

LINQ doit pouvoir me faire la jointure, dans le code, sans que je modifie mes tables, mes bases, mes procédures stockées car je sais que déployer de telles modifications ce n'est pas une sinécure.

Voici comment j'effectue ma jointure :

    private void BuildDataSource()
    {
        ///
        /// Acces aux donnes
        ///

        // On peut recuperer les MemberUser mais on ne sait pas quoi en faire
        MembershipUserCollection muc = Membership.GetAllUsers();

        // Preparation de l'appel a la procedure stockee aspnet_Membership_GetAllUsers
        SqlParameter[] parameters = new SqlParameter[ 3 ];
        parameters[ 0 ] = new SqlParameter( "@ApplicationName", SqlDbType.VarChar );
        parameters[ 0 ].Value = "/"; // Application.ToString();
        parameters[ 1 ] = new SqlParameter( "@PageIndex", SqlDbType.Int );
        parameters[ 1 ].Value = 0;
        parameters[ 2 ] = new SqlParameter( "@PageSize", SqlDbType.Int );
        parameters[ 2 ].Value = 5000;

        // Infos du User
        DataSet dsUser = new DataSet();
        dsUser = SqlDataProvider.ExecuteDataset
        (
            System.Configuration.ConfigurationManager.ConnectionStrings[ "LocalSqlServer" ].ConnectionString,
            CommandType.StoredProcedure,
            "aspnet_Membership_GetAllUsers",
            parameters
        );

        // Infos du membre
        DataSet dsMember = new DataSet();
        dsMember = SqlDataProvider.ExecuteDataset
        (
            Tools.DatabaseConnectionString,
            CommandType.StoredProcedure,
            "GetMemberInfoAll"
        );

        ///
        /// La Jointure
        ///
        DataTable dtMember = dsMember.Tables[ 0 ];
        DataTable dtUser = dsUser.Tables[ 0 ];

        IEnumerable<DataRow> memberQuery =
            from member in dtMember.AsEnumerable()
            select member;

        IEnumerable<DataRow> userQuery =
            from user in dtUser.AsEnumerable()
            select user;

        var userMemberQuery =
            from m in memberQuery.AsEnumerable()
            join u in userQuery.AsEnumerable()
            on m.Field<Guid>( "MembreGUID" ) equals u.Field<Guid>( "UserId" )
            orderby m.Field<Guid>( "MembreGUID" ) descending
            select new
            {
                MembreGuid = m[ "MembreGUID" ],
                NomUtilisateur = m[ "NomUtilisateur" ],
                MotDePasse = m[ "MotDePasse" ],
                Nom = m[ "Nom" ],
                Prenom = m[ "Prenom" ],
                Societe = m[ "Societe" ],
                Telephone = m[ "Telephone" ],
                Adresse = m["Adresse" ],
                IsApproved = u["IsApproved" ],
            };
       
        //
        // Construction de la table de resultats
        //
        DataTable userMember = new DataTable();
        DataColumn[] colums = new DataColumn[ dtUser.Columns.Count + dtMember.Columns.Count ];
        dtUser.Columns.CopyTo( colums, 0 );
        dtMember.Columns.CopyTo( colums, dtUser.Columns.Count);
        foreach ( DataColumn dc in colums )
        {
            DataColumn dc1 = new DataColumn();
            dc1.ColumnName = dc.ColumnName;
            userMember.Columns.Add( dc1 );
        }

        foreach ( var row in userMemberQuery )
        {
            DataRow r = userMember.NewRow();
            r[ "MembreGUID" ] = row.MembreGuid;
            r[ "NomUtilisateur" ] = row.NomUtilisateur;
            r[ "MotDePasse" ] = row.MotDePasse;
            r[ "Nom" ] = row.Nom;
            r[ "Prenom" ] = row.Prenom;
            r[ "Societe" ] = row.Societe;
            r[ "Telephone" ] = row.Telephone;
            r[ "Adresse" ] = row.Adresse;
            r[ "IsApproved" ] = row.IsApproved;

            userMember.Rows.Add( r );
        }

        GridViewMembers.DataSource = userMember; // userMemberQuery; // userMember;
        GridViewMembers.DataBind();
    }

J'ai beaucoup lu, il y a surement des optimisations possibles à ce code, dites moi.

Quand je suis tombé là dessus, j'ai crié : Euréca ! Alors je pense que cela pouvoir servir à vous aussi.

Have fun in ASP.NET C# Development !

Mais n'abusez pas des jointures dans le code C# ce n'est pas optimum.

Sans vous commander, j'ai besoin de flux ici :

Questionnaire en ligne

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

ASP.NET

DotShoppingCart

by Bruno 8/29/2008 11:39:00 AM

Je suis un peu dérouté par l'évolution des StarterKits. Ils m'ont pourtant été d'une aide précieuse dans le passé.
Mais aujourd'hui où est passé l'esprit OpenSource ? Je trouvais déjà que SubSonic était une violation de l'esprit de simplicité que se doit de conserver un StarterKit.

Quelqu'un aurait-il un exemplaire du DotShoppingCart qui fonctionne ?
Je veux bien sûr parler des sources avec une BD correctement configurée et un attachement automatique à SQL express par exemple ce que l'on fait maintenant.

Je n'y suis pas arrivé, pourtant j'ai tout fait lancé des batchs des exes des sqls mais rien n'y fait.

Les plantages que j'obtiens sont d'un autre monde, dans WebDevEnv.exe notamment mais pas seulement, le journal des évènements explose et j'en passe.

DW20.exe lui aussi part en live en prenant 100% de la charge CPU.

En visitant leur Site :
http://www.dotshoppingcart.com/Page/Buy.aspx

On comprendra aisément que tout est à vendre :

DotShoppingCart Suite V2.1
$995.00

Ca fait cher l'OpenSource.

Dans le CodePlex :
http://www.codeplex.com/dotshoppingcart

N'est pas non plus d'une très grande utilité car vous double-cliquez sur la solution et là ...

Au secours !?

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | SQL Server

Questionnaire en ligne

by Bruno 7/3/2008 12:52:00 PM

Nouvelle application web éditée par la SoDevLog en ce début d'année 2008 : le "Questionnaire en ligne"

Découvrez le site dédié à cette application web :

http://www.sodevlog.fr/Questionnaire.en.ligne

Parmi les outils du web marketing, voici un outil original qui vous permet d'avoir une relation privilégiée avec vos contacts.
Bien plus qu'une simple Newsletter, le "Questionnaire en ligne" vous permet de mieux connaitre vos contacts et leurs attentes par rapport à vos services, vos produits.

Je vous invite à découvrir l'application en ligne, côté conception des Questionnaires et Administration de l'application à l'adresse suivante :
http://www.sodevlog.fr/QuestionnaireEnLigneDemo

Informations de connexions :

Nom d'utilisateur : invité
Mot de passe : invité

Découvrez l'application côté interviewés à l'adresse suivante en répondant au Questionnaire sur ma société la SoDevLog :
http://www.sodevlog.fr/Questionnaire/Contact/Register.aspx?uid=4ef8a1fd-7b55-40aa-9301-3f110aaa7447&qid=12

Merci de vous enregistrer dans ce formulaire, afin de répondre au Questionnaire sur la SoDevLog.

C'est un peu le binse, la pagaille, le bazar, lorsque l'on ouvre une application web en utilisation de la sorte.

De plus, ce n'est pas des utilisateurs motivés qui viennent explorer les fonctionnalités, mais des gens qui font n'importe quoi.

Aussi nous ne le faisons plus. Mais nous obligeons les gens à s'inscrire afin de tester légèrement leurs motivations.

Pour découvrir l'application, il suffit de vous inscrire pour recevoir les informations de connexion d'un compte d'utilisateur.

Alors SVP mettez votre vrai nom, une vraie adresse email, pour recevoir de vraies informations.

N'hésitez pas, nous ne sommes pas des revendeurs d'adresses emails, ce n'est pas notre business !

Cordialement votre.

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , ,

Applications Webs | ASP.NET

Microsoft DotNet Framework 3.5 - petit soucis

by Bruno 7/1/2008 4:03:00 AM

Problème de déploiement sur  un serveur en production

D'aucun disaient que le framework 3.0 n'était je site : "qu'une surcouche du framework 2.0".

Il ne doit pas en aller de même pour le framework 3.5 qui pèse environ 197 Mo !

Et comment déployer tout ça, sur un serveur en production qui pour des raisons de sécurité  évidentes n'a pas accès à Internet !

More...

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Applications Webs | ASP.NET

Authentification dans les applications web

by Bruno 6/21/2008 3:36:00 AM

A force de déployer des applications web, notamment lors du dernier déploiement des sites vitrines. J'ai pu constater un comportement auquel je ne m'attendais pas. J'ai déployé 3 sites vitrines d'un coup avec le même nom d'utilisateur et le même mot de passe. Quelle ne fut pas ma surprise lorsque j'eus pu naviguer de l'une à l'autre dans la partie administration des 3 applications en même temps.

Remarquez c'était assez partique, je pouvais administrer les trois applications sans avoir à me relogguer.

Attention de bien gérer la partie suivante du web.config :

<authentication mode="Forms">
   <forms name=".ASPXLOGIN" loginUrl="~/Member/Login.aspx" enableCrossAppRedirects="false"/>
 </authentication>

Si plusieures de vos applications webs déploiyées sur le même serveur on le même "forms name" vous pouvez naviguer d'une application à l'autre sans vous relogguer !

Et puis j'ai découvert le paramètre enableCrossAppRedirects que je mets maintenant à false.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Applications Webs | ASP.NET | Langage C# solutions

Site Vitrine Dynamique

by Bruno 6/8/2008 7:17:00 AM

Voilà un petit projet qui semble être une bonne idée pour les entreprises qui "démarrent" et qui n'ont pas un gros budget à consacrer pour leur présence sur Internet mais qui désire être présent et présenter simplement leur activité. Ce site vitrine dynamique est entièrement modifiable simplement en utilisant votre navigateur Internet.

Découvrez la puissance d'un site vitrine dynamique, construisez vos pages et organisez les, très simplement dans un menu qui se construit dynamiquement :



Ce projet est né d'une réflexion à plusieurs, sur la pertinence de créer un projet, un site web, dont le contenu serait entièrement dynamique. C'est à dire modifiable par l'utilisateur directement en ligne, simplement par son navigateur Internet. Les internautes ont déjà l'habitude de genre de pratiques avec leurs blogs.  

Seulement le blog, a cette fâcheuse tendance à dater, archiver, puis faire disparaitre l'information ! On est obligé de produire souvent une information vite digérée ce qui n'est pas le cas pour un "site vitrine" où l'info peut être présente plusieurs mois et modifiée à loisir. Dans un blog classique, l'information s'organise elle même, en fonction des tags, des mots clefs et des dates de vos billets. Dans le site vitrine dynamique, vous organisez, vos pages ou billets dans un menu dynamique.

J'ai encore tout récemment entendu de petits entrepreneurs se plaindre des ces sites de présentation qu'on leur a développé pour un budget compris entre 1500 et 3000 Euros mais avec lesquels, ils sont bloqués pour mettre à jour l'information. Ou bien alors ils doivent payer le webmaster pour faire ce travail à chaque mise à jour. C'est un comble à l'heure des applications webs dynamiques dont certaines se mettent même à jour automatiquement toutes seules.

D'où la genèse de ce projet que je vous demande de découvrir plus avant, à l'adresse suivante :
http://www.sodevlog.fr/site.dynamique.en.ligne

C'est une application web très agréable à utiliser.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

Applications Webs | ASP.NET | Langage C# solutions

Tag XML, bug grave de visual studio 2005

by Bruno 5/13/2008 5:32:00 PM

Dans la série des bugs dont on doit prendre note et verifier qu'ils ont été corrigés dans la version 2008, voici le bug des tags XML :

Dans un fichiers XML ont pourrait imaginer d'écrire, encore que ... :

<tag>

<tag>

<element1 />

<element2 />

</tag>

</tag>

Notez que <tag> décrit à la fois l'encadrant et l'élément. Que fait le parseur XML de Visual Studio ? Est-il capable de signaler une simple erreur de syntaxe ?
Et bien non ! Lancer l'analyse d'un tel fichier et vous obtenez un plantage servère de l'ordi.

Voilà ce qu'il vaut mieux écire :

<tags>

<tag>

<element1 />

<element2 />

</tag>

</tags>

Le plantage est servère, il a lieu au niveau du deboggueur IE, Votre navigateur ne répond rien mais pendant ce temps des processus prennent la main et bouffe 90% de charge CPU.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

ASP.NET

ASP.NET Bugs du Framework 2.0

by Bruno 2/11/2008 4:51:00 AM

Je tente ici d'attirer l'attention de mes collègues développeurs d'applications webs pour mettre en commun des connaissances sur le fonctionnement des objets microsoft. 
Je commence cette rubrique pour répertorier ? Non ce serait trop gros ! Mais en tout cas pour communiquer sur les bugs des objets microsoft. Des fois, c'est vraiment trop énervant, cela fait perdre un temps fou à comprendre le comportement réel de ces objets souvent pourris. Vous me direz, pourquoi ne pas utiliser des objets du commerce Infragistics ou ComponentArt ? A vrai dire ... Je ne sais pas. Sans doute je cherche à percer le comportement des objets standards avant tout puis je dois être un peu maso ... More...

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

ASP.NET

CheckBoxList - Liste de cases à cocher exclusive

by Bruno 1/22/2008 6:15:00 AM

Après avoir longuement observé le comportement de l'objet CheckBoxList, je cherche à faire une liste de case à cocher qui soit exclusive c'est à dire qu'une seule case ne soit cochée à la fois. Si l'utilisateur vient à décocher la case cochée, c'est la première de la liste qui redevient sélectionnée.

Bon c'est un simple exercice "de style" sinon il suffit d'utiliser une RadioList mais le style radio button ne me plait pas je veux des carrés ! et je trouve pas le moyen de modifier un tant soit peu la radio list ... bon c'est comme ça que je me justifie

Bon ça a l'air façile. Par exemple, je reçois par "object sender" le nouvel objet (une CheckBox) sélectionné par l'utilisateur, j'invalide le permier, je valide celui-là.
Non non pas du tout, l'objet "sender" me renvoit l'ensemble de la ListItem CheckBoxList Selected et démerdez-vous. Il n'y a qu'a voir la littérature sur le sujet pour voir que les développeurs sont obligés de parcourir la liste pour voir quelle case est cochée.

More...

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

ASP.NET

Powered by BlogEngine.NET 1.2.1.0
Theme by Mads Kristensen