L'AutoCompletion en ASP.NET

 01/01/2019 |   Admin |  C#


Le complètement ou complètement automatique, ou encore par anglicisme complétion ou autocomplétion, est une fonctionnalité informatique permettant à l'utilisateur de limiter la quantité d'informations qu'il saisit avec son clavier, en se voyant proposer un complément qui pourrait convenir à la chaîne de caractères qu'il a commencé à taper. cf wikipédia

Dans cet exemple nous allons voir comment fonctionne l'autoCompletion à l'aide d'une liste de pays.

1) Création du WebService

Dans un premier temps, il faut créer le WebService qui renverra la liste des pays commençants par la saisie de l'utilisateur.

Ici le fichier du WebService se nomme "MyService.asmx"

a) Sans base de données

Pour comprendre de façon très simple le fonctionnement de ce controle, on ne va pas utiliser de base de données, mais un simple tableau qui renverra des pays "en dur".

Code :

[WebMethod]
public string[] GetCountries(string prefixText, int count)
{
ArrayList countryList = new ArrayList();
 
string[] countries = { "France", "Finland", "Allemagne", "Pologne", "Italie", "Etats-Unis", "Angleterre" };

foreach (string country in countries)
{
            if (country.ToLower().StartsWith(prefixText))
                countryList.Add(country);
}
 
return
...

Lire >>

Personnaliser les pages d'erreur en ASP.NET

 01/01/2019 |   Admin |  C#

Tags: Erreurs

Au lieu d'avoir les pages d'erreurs par défaut, souvent désagréable à voir par le client, asp.net permet en quelques cliques de personnaliser ces pages.

1) Décommenter la section "customErrors" dans le web.config

et y modifier le nom des fichiers, on peut y placer aussi bien des pages html que des pages aspx.

<customErrors mode="On" defaultRedirect="GenericErrorPage.aspx">
<error statusCode="403" redirect="403.aspx" />
<error statusCode="404" redirect="404.aspx" />
</customErrors>

L'attribut "mode" peut prendre 3 valeurs :

On : La gestion des erreurs est activée en local et à distance.

Off : Gestion d'erreurs désactivée.

RemoteOnly : Gestion des erreurs activée seulement à distance, en local se seront les pages par défaut.

2) Créer les pages

Ensuite il faut créer ces pages, soit de façon très simple en mettant une image et le nom de l'erreur ou alors en affichant un message dynamique (voir 3)

3) Personnaliser ses pages d'erreurs

a) Créer une classe "BasePage" qui va hériter de "System.Web.UI.Page"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
 
/// <summary>
/// Description résumée de BasePage
/// </summary>
public class BasePage : System.Web.UI.Page
{
      public BasePage()
{
}
...

Lire >>

Url Rewriting

 01/01/2019 |   Admin |  C#


"L'URL-rewriting est une réécriture d'URL. La technique consistant à réécrire sous forme plus simple des URLs complexes. Cette technique est transparente pour l'internaute ainsi que pour les moteurs de recherches. Le but principal est d'obtenir un meilleur référencement."  cf kdj-webdesign.com

Le but de ce tutoriel est de transformer de façon transparente pour l'utilisateur ce genre d'url : 

Au lieu d'avoir ce type d'adresse : http://www.lesite.com/product.aspx?id=1&name?leNomDeMonProduit

on préférera la transformer en : http://www.lesite.com/leNomDeMonProduit.html

A. Première technique

1) Ajouter la DLL nécessaire dans le répertoire Bin de votre site web

ThunderMain.URLRewriter.dll (4,50 kb) ou sur le site du projet "code source" :http://www.codeproject.com/aspnet/URLRewriter.asp

Clique droit sur le site, puis ajouter une référence pointant sur cette DLL.

2) Ajouter ou modifier le fichier Global.asax

Y ajouter cette méthode :

void Application_BeginRequest(object sender, EventArgs e)
{
ThunderMain.URLRewriter.Rewriter.Process();
}

3) Modifier le fichier Web.config

a) Ajouter dans la section "configuration" :
<sectionGroup name="system.web">
<section name="urlrewrites"  
type="ThunderMain.URLRewriter.Rewriter,&#xA; ThunderMain.URLRewriter,
...

Lire >>

L'obfuscation "Simple" en .Net avec "Dotfuscator"

 01/01/2019 |   Admin |  C#


"En informatique, un obfuscateur est un utilitaire qui transforme le bytecode d'un programme en un bytecode aux fonctions équivalentes mais plus difficile à décompiler.

Le but de cet outil est de protéger un programme d'attaques ou d'intrusions notamment dans le domaine de l'espionnage industriel." cf Wikipédia

Cette technique permet d'obtenir un code impénétrable.

Introduction

Pour ce tutorial, je vais utiliser une classe très simple, la classe HelloWorld.cs, contenant une propriété, deux constructeurs et une méthode :

//-----------------------------------------------------------------------
// <copyright file="HelloWorld.cs" company="PH">
//     Copyright (c) PH. All rights reserved.
// </copyright>
// <author>PH</author>
// <date>01/09/2010</date>
//-----------------------------------------------------------------------
namespace Dotfuscator
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
 
    /// <summary>
    /// HelloWorld Class
    /// </summary>
    public class HelloWorld
    {
        /// <summary>
        /// Initializes a new instance of the HelloWorld class
        /// </summary>
        public HelloWorld()
        {
        }
 
        /// <summary>
        /// Initializes a new
...

Lire >>

Mise en place de log4net dans un projet web

 01/01/2019 |   Admin |  C#


Mise en place de Log4Net :

1) Ajouter la référence log4net.dll au projet
(téléchargement sur http://logging.apache.org/)
2) Ajouter au projet, le fichier Global.asax.
Dans l’événement « Application_Start » ajouter ce code : log4net.Config.XmlConfigurator.Configure();

 

void Application_Start(object sender, EventArgs e)
    {
        // Code qui s'exécute au démarrage de l'application
        log4net.Config.XmlConfigurator.Configure();
    }

 

3) Ouvrir le fichier web.config puis

- ajouter dans la section « Configuration/Configsections » ce code :

<section  name="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

 

- Après la balise de fermeture</configSections> ajouter la balise <log4net><log4net/>

- Entre ces balises rajouter l’un ou ces deux codes en fonction de votre choix (envoi par mail, ou stockage dans un fichier)

o Log dans un fichier texte :      

 <appendername="LogFileAppender"type="log4net.Appender.FileAppender">
<paramname="File"value="Logs\\Log4Net.log"/>
<layouttype="log4net.Layout.PatternLayout">
<paramname="ConversionPattern"value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>

o Log par mail :

<appendername="SmtpAppender"type="log4net.Appender.SmtpAppender">
<tovalue="to@domain.com"
...

Lire >>

Parcourir une GridView contenant des TemplateField

 01/01/2019 |   Admin |  C#


Cet exemple permet de créer une gridView, puis de parcourir ligne à ligne ses valeurs pour enfin les afficher.

Page aspx :

<table width="100%">
  <tr>
    <td align="center">
<asp:GridView runat="server"
  ID="gvList"
  AutoGenerateColumns="false"
  Width="400px">
   <Columns>
    <asp:TemplateField HeaderText="Nom" ItemStyle-Width="50%">
     <ItemTemplate>
             <asp:TextBox runat="server"
  ID="txtNom"
  Width="98%" />
           </ItemTemplate>
          </asp:TemplateField>
          <asp:TemplateField HeaderText="Prénom" ItemStyle-Width="50%">
            <ItemTemplate>
              <asp:TextBox runat="server" ID="txtPrenom" Width="98%"></asp:TextBox>
            </ItemTemplate>
          </asp:TemplateField>
         </Columns>
        </asp:GridView>
      </td>
    </tr>
    <tr>
      <td align="center">
         <asp:Button runat="server"
   ID="btnValid"
   Text="Valider"
   OnClick="btnValid_Click" />
       </td>
    </tr>
    <tr>
      <td align="center">
          <asp:TextBox TextMode="MultiLine"
     ID="txtResult"
     runat="server"
     Height="200px"
     Width="60%" />
      </td>
    </tr>
</table>

CodeBehind :

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
   {
// Cré
...

Lire >>

View state persistant

 01/01/2019 |   Admin |  C#


Voici le moyen de rendre persistant un view state lors de différents postback au sein de la même page :
public string TheProperty
{
get
    {
string text = (string)ViewState["TheProperty"];
if (text != null)
return text;
else
return string.Empty;
}
set
{
ViewState["TheProperty"] = value;
}
}

Lire >>

Récupérer les détails d'un utilisateur depuis l'Active Directory

 01/01/2019 |   Admin |  C#


Activer les roles dans le web.config (System.Web) :

<authentication mode="Windows" /> 

<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" />
Ajouter les références suivantes :
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;

1) Récupérer le login de l'utilisateur :

public static string GetUserName()
{
return HttpContext.Current.User.Identity.Name;
}

 

2) Récupérer le prénom de l'utilisateur :

public static string GetFirstName()
{
string principal = GetUserName();
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx,principal);
return user.GivenName;
}

A partir de cette méthode, tout est récupérable, il suffit de changer le GivenName par la propriété correspondante.

 

3) Tester un droit pour l'utilisateur connecté :

Après avoir ajouté cette chaine dans le web.config :
<appSettings>
……
<add key="admin" value="Domaine\Droit"/>
</appSettings> 
public static bool UserIsAdmin()
{
return Roles.IsUserInRole(ConfigurationManager.AppSettings["admin"]);
}

Lire >>