Premetto che non sono un developer, chi mi conosce lo sa, però mi diletto abbastanza....
Mi serviva per un'applicazione web legata all'utilizzo di MS Dynamics CRM e poi ho pensato potesse essere cmq un argomento abbastanza interessante da postare nel mio blog.
Che cosa fa questo script in C#? Includo un file .zip con il codice che di seguito commento. Sostanzialmente avendo un file excel piuttosto che un CSV, che contenga dati su utenti nella forma:
username password email Ruolo
mario rossi mario.rossi@test.com admin
giorgio biondi giorgio.biondi@test2.com visitor
Vengono importati i dati nel MEMBERSHIP SQLPROVIDER di ASP.NET in modo che l'utente possa successivamente loggarsi ad esempio ad aree private di un sito web. (avendo quindi opportunamente settato il web.config). Lo script tiene anche conto dei RUOLI che ogni singolo utente può avere per l'applicazione WEB e provvederà quindi all'associazione automatica dell'utente al ruolo.
Ecco la procedura passo passo:
1) In un progetto esistente creare una nuova pagina (ad esempio create_users.aspx), utilizzare code behind o meno a scelta... C# è il linguaggio chiaramente come di seguito si evince
2) Nel caso di codebehind si creerà anche una pagina create_users.aspx.cs
//INIZIO SCRIPT create.aspx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class manage_create_users : System.Web.UI.Page
{
string ConnectionString = System.Web.Configuration.WebConfigurationManager.
//Sostituire tra le virgolette il nome della stringa di connessione così come indicato nel web.config
ConnectionStrings["ConnectionString"].ConnectionString;
protected string Email = "";
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
connection.Open();
//Crea tabella UTENTI in SQL Server: La tabella va creata seguendo lo schema del file excel o del csv. In questo caso ci sono solo 4 campi (username, password, email e role)
string sql = "create table Utenti( " +
"username varchar(50), " +
"password varchar(50), " +
"email varchar(50), " +
"role varchar(50) )";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.ExecuteNonQuery();
//bulk insert: vengono recuperati i dati dal file esterno. In questo caso il file si chiama users.txt, localizzato su un hard disk D: I campi sono separati da un punto e virgola (;)
sql = @"bulk insert Utenti from 'D:\users.txt' with (FIELDTERMINATOR = ';')";
cmd = new SqlCommand(sql, connection);
cmd.ExecuteNonQuery();
// Inizia la lettura dei dati dalla tabella Utenti di SQL Server
sql = "select * from Utenti";
cmd = new SqlCommand(sql, connection);
SqlDataReader rdr = cmd.ExecuteReader();
//
while (rdr.Read())
{
string username = rdr.GetString(0);
string password = rdr.GetString(1);
string email = rdr.GetString(2);
string role = rdr.GetString(3);
MembershipCreateStatus status;
// Creazione dell'utente con soli 3 campi come da classe Membership.CreateUser
Membership.CreateUser(username, password, email);
// Viene associato ogni singolo utente ad un Ruolo (dell'ultima colonna del file excel/csv)
Response.Write(role);
if (!Roles.RoleExists(role))
Roles.CreateRole(role);
Roles.AddUserToRole(username, role);
}
rdr.Close();
connection.Close();
}
}
}
// FINE SCRIPT
E' da tenere presente che questo script non contiene una query per la cancellazione della tabella UTENTI dal SQL Server.
create_users.aspx.cs.zip (871,00 bytes)