Jun 28

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"]);
}
Jan 08

Voici les bases pour implémenter un client/serveur TCP en c# :

Le client :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net.Sockets;

using System.IO;

 

public class Client

{

    public static void Main(string[] args)

    {

        try

        {

            string adresseIp = "Votre IP";

            int port = 8001;

 

            TcpClient client = new TcpClient();

            Console.WriteLine("Connexion.....");

            client.Connect(adresseIp, port);

            Console.WriteLine("Connecté");

           

            string chaineAenvoyer = string.Empty;

            while (chaineAenvoyer.ToLower() != "quit")

            {

                Console.WriteLine("\nChaine a envoyer : ");

                chaineAenvoyer = Console.ReadLine();

 

                Stream stream = client.GetStream();

                ASCIIEncoding encoding = new ASCIIEncoding();

 

                byte[] byteAenvoyer = encoding.GetBytes(chaineAenvoyer);

                Console.WriteLine("Transmission.....");

                stream.Write(byteAenvoyer, 0, byteAenvoyer.Length);

                byte[] byteEnvoyes = new byte[100];

                int nbBytes = stream.Read(byteEnvoyes, 0, 100);

                for (int i = 0; i < nbBytes; i++)

                {

                    Console.Write(Convert.ToChar(byteEnvoyes[i]));

                }

            }

 

            client.Close();

        }

        catch (Exception e)

        {

            Console.WriteLine("Erreur : " + e.StackTrace);

        }

    }

}

Le serveur :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net;

using System.Net.Sockets;

 

public class Server

{

    public static void Main(string[] args)

    {

        try

        {

            string adresseIp = "Votre IP";

            int port = 8001;

 

            IPAddress ipAd = IPAddress.Parse(adresseIp);

            TcpListener listener = new TcpListener(ipAd, port);

 

            listener.Start();

            Console.WriteLine("Le serveur écoute sur le port " + port + " ...");

            Console.WriteLine("Le point de terminaison local est :" + listener.LocalEndpoint);

            Console.WriteLine("Attente d'une connexion.....");

 

            Socket socket = listener.AcceptSocket();

            Console.WriteLine("Connexion acceptee de " + socket.RemoteEndPoint);

 

            string motRecu = string.Empty;

 

            while (motRecu.ToLower() != "quit")

            {

                motRecu = string.Empty;

                Console.WriteLine("Reception...");

 

                byte[] byteRecu = new byte[100];

                int nbBytes = socket.Receive(byteRecu);

                for (int i = 0; i < nbBytes; i++)

                {

                    motRecu += Convert.ToChar(byteRecu[i]);

                }

                Console.Write(motRecu);

 

                if (motRecu == "alien")

                {

                    Console.WriteLine("");

                    Console.WriteLine(@"      _       _");

                    Console.WriteLine(@"     (_\     /_)");

                    Console.WriteLine(@"       ))   ((");

                    Console.WriteLine(@"     .-'''''''-.  ");

                    Console.WriteLine(@" /^\/  _.   _.  \/^\");

                    Console.WriteLine(@" \(   /__\ /__\   )/");

                    Console.WriteLine(@"  \,  \o_/_\o_/  ,/");

                    Console.WriteLine(@"    \    (_)    /");

                    Console.WriteLine(@"     `-.'==='.-'");

                    Console.WriteLine(@"      __) - (__  ");

                    Console.WriteLine(@"     /  `~~~`  \");

                    Console.WriteLine(@"    /  /     \  \");

                    Console.WriteLine(@"    \ :       ; /");

                    Console.WriteLine(@"     \|==(*)==|/");

                    Console.WriteLine(@"      :       :");

                    Console.WriteLine(@"       \  |  /");

                    Console.WriteLine(@"     ___)=|=(___");

                    Console.WriteLine(@"    {____/ \____}");

                }

                ASCIIEncoding encoding = new ASCIIEncoding();

                socket.Send(encoding.GetBytes("La chaine a ete recue par le serveur."));

                Console.WriteLine("\nEnvoi de l'acknowledgement");

 

            }

            socket.Close();

 

           listener.Stop();

        }

        catch (Exception e)

        {

            Console.WriteLine("Erreur : " + e.StackTrace);

        }

    }

}

 

Pour tester il suffit de lancer le serveur dans un premier temps puis le client.

Les messages seront saisis dans le client puis affichés dans le serveur.

Pour quitter l'application il suffit d'entrer la commande "quit".

Pour afficher un petit dessin il faut taper la commande "alien" ! (pour le fun)

 

Ceci est la base d'un client serveur TCP. A partir de cette base on peut imaginer de nombreuses implémentations. 

 

 

 

 

Tags:
Oct 21

using System.Diagnostics;

Stopwatch sw = new Stopwatch();

sw.Start();

« La méthode à exécuter »

sw.Stop();

Console.WriteLine("Temps d'éxécution : " + sw.Elapsed.Minutes + " minutes, " + sw.Elapsed.Seconds + " secondes, " + sw.Elapsed.Milliseconds + " milliseconds");

Tags:
Oct 20

Dans cette exemple, la chaine de caractère commence par <object, contient une url qui commence par http et se termine par "

<object.....blablabla......."http://lesite.com/gs4545?id=8" ....... blablabla.......</object>

Pour récupérer l'url il suffit d'utiliser ce code : 

string theUrl = fullUrl.Substring(fullUrl.IndexOf("http")).Split('"')[0];

 

Tags:
Jul 02

public class ConvertCSVToXML

{

// conversion du fichier CSV téléchargé en fichier xml

private const string _root = "Articles";

private const string _node = "Article";

private const char _separator = ';';

 

public static DataSet convert(string pathSource, string pathDestination)

{

        // remplacement du caractère " " par rien ("")

        StreamReader stream = null;

        string[] saEntetes = null;

        string sLigne = string.Empty;

 

        // Initialisation des DataSet et DataTable

        DataSet csvDataSet = null;

        DataTable csvDataTable = null;

        try

          {

            csvDataSet = new DataSet(_root);

            csvDataTable = new DataTable(_node);

 

            // Lecture du fichier CSV ligne par ligne

            stream = new StreamReader(pathSource);

            sLigne = stream.ReadLine();

 

            // En tenant compte du séparateur

            saEntetes = sLigne.Split(_separator);

 

            for (int i = 0; i < saEntetes.Length; i++)

            {

                // formatage des éléments du fichier XML

                csvDataTable.Columns.Add(saEntetes[i].ToString());

            }

            int ii = 0;

 

            while (sLigne != null)

            {

                if (ii != 0)

                {

                    csvDataTable.Rows.Add(sLigne.Split(_separator));

                    sLigne = stream.ReadLine();

                }

                else

                {

                    ii++;

                    sLigne = stream.ReadLine();

                }

            }

 

            csvDataSet.Tables.Add(csvDataTable);

            csvDataSet.WriteXml(pathDestination);

 

            return csvDataSet;

        }

        catch (Exception ex)

        {

          return null;

        }

    }

}

 

 

Tags: | |