Visualizzazione post con etichetta aspx. Mostra tutti i post
Visualizzazione post con etichetta aspx. Mostra tutti i post

lunedì 9 luglio 2018

Invio email tramite l'oggetto MailMessage in c#

In questo esempio si può inviare un'email tramite librerie che mette a disposizione il framework .Net utilizzando il linguaggio c#.
Si può utilizzare questo metodo passando come argomenti il mittente, l'oggetto dell'email, il corpo del messaggio, una stringa di una serie di destinatari separati da una virgola e infine il parametro smtp del server:

public static void SendMailMessage(string mailSender, string obj, string msg,
string recipients, string smtpserver)
{
 try { 
  MailMessage mailMessage = new MailMessage();
  MailAddress sender = new MailAddress(mailSender);
  foreach (string email in recipients.Split(",".ToCharArray()))
  {
   mailMessage.To.Add(email);
  }
  mailMessage.From = sender;
  mailMessage.Subject = obj;
  mailMessage.Body = msg; 
  SmtpClient server = new SmtpClient(smtpserver);   
  server.Send(mailMessage);     
  mailMessage.Dispose();
  server = null;
 }
 catch (Exception e)
 {
  //some code here
 }
}

lunedì 2 luglio 2018

Comprimere file in formato zip con c#

Un modo per comprimere dei file in formato zip con linguaggio c#, è quello di di utilizzare la libreria DotNetZip
disponibile su DotNetZip
Componente abbastanza valido perchè sono riuscito a comprimere un file uguale o inferiore a 2.5 Gb utilizzando DotNetZip, una libreria gratuita.
Per utilizzare questo esempio bisognerà scaricare la libreria e importarla nella solution di Visual Studio come una classica dll (tasto dx e add reference).

 
try
{
 using (ZipFile zip = new ZipFile())
  {
   zip.ParallelDeflateThreshold = -1; 
   zip.AddFile("c:\test1.doc", ""); //example file
   zip.AddFile("c:\test2.txt", ""); //example file
   //....other files
   zip.Save("c:\dirzip\test_zip.zip"); //example dir and file
  }
 }
catch (ZipException e)
{
 //some code here
}

lunedì 25 giugno 2018

Lettura riga per riga di un file di testo in c#

Un altro modo per leggere un file di testo in c# è creare un oggetto StreamReader e analizzare ogni riga in un ciclo while come fatto in questo esempio:

StreamReader reader = new StreamReader(File.OpenRead("c:\test.txt"));
try
{
 while (!reader.EndOfStream)
 {
  var line = reader.ReadLine();  
 }
}
catch (Exception ex)
{
 //code here
}
finally
{
 reader.Close();
}

lunedì 18 aprile 2016

Test sicurezza sito web e OWASP

Navigando alla ricerca di soluzioni o best-practice per siti web in ambiente .Net oppure Java, mi sono imbattuto su questo link molto interessante.
Link:http://webresourcesdepot.com/10-free-web-application-security-testing-tools
Questi tools come Netsparker (demo gratutita e pagamento), Watcher (gratuito) permettono di individuare bug o problemi di sicurezza ampiamente descritti e dettagliati da OWASP (Open Web Application Security Project).
I tools descritti vanno bene anche se i siti da analizzare si trovano su rete intranet.

mercoledì 1 ottobre 2014

Problema con la stampa dei grafici tramite Chart del framework .Net

A volte non è possibile stampare con il browser Internet Explorer o Chrome o un altro ancora, una pagina web con dei grafici fatti con il componente Chart del framework .Net perchè alcune proprietà del componente non sono state settate correttamente in fase di sviluppo.
La proprietà da modificare è la "ImageStorageMode" portandola così ad utilizzare un file fisico.
Successivamente verrà settata la proprietà "ImageLocation" con il percorso del file (in questo caso si è creata una directory sul sito e si è dato un nome fittizio all'immagine che ogni volta verrà sovrascritta, volendo dal sito Microsoft è possible utilizzare un asintassi per poter scrivere ogni volta l'immagine in maniera sequenziale).

<asp:CHART id="Chart1"  runat="server" Palette="BrightPastel" BackColor="#D3DFF0" Height="580px" 
Width="560px" BorderlineDashStyle="Solid" BackGradientStyle="TopBottom" BorderWidth="2" ImageStorageMode="UseImageLocation" ImageLocation="~/TempImages/ChartW"
BorderColor="26, 59, 105" IsSoftShadows="False" >

venerdì 19 settembre 2014

Ricerca con Bing Api e c# da una pagina aspx di Microsoft .Net

Con queste semplice esempio è possibile utilizzare le Bing Api tramite c# ed eseguire una ricerca con Bing.
Si può creare ad esempio un pulsante che punti sul metodo e restituisca i risultati su di una listBox e una textBox per inserire la ricerca.
Per curiosità ho inserito nel webConfig l'inidirizzo e la chiave per connettersi a Bing, ma ciò non toglie che si può facilmente inserire nel sorgente c#.
Attualmente per utilizzare le Api di Bing bisogna creare un account Azure (disponibile anche gratuitamente) e farsi dare la chiave di accesso.

Nel file Web.Config inserire le due righe:
<add key="BingKey" value="1231231231231231231321231231231231231231231"/>
<add key="BingUrl" value="https://api.datamarket.azure.com/Bing/Search/"/>

Metodo da richiamare in c#
// Example for only English language research; null= all languages
BingSearch("rent car europe", "en-GB"); 

Codice di esempio da inserire per c#
string bingKey = ConfigurationManager.AppSettings["BingKey"].ToString();
string bingUrl = ConfigurationManager.AppSettings["BingUrl"].ToString();

public void BingSearch(string search_expression, string lang)
{
 try{
  var bingContainer = new Bing.BingSearchContainer(new Uri(bingUrl));
  var accountKey = bingKey;
  bingContainer.Credentials = new NetworkCredential(accountKey, accountKey);
 
  var searchQuery = bingContainer.Web(search_expression, null, null, lang.Equals("")?null:lang, null, null, null, null);
  var varResults = searchQuery.Execute();

  foreach (var result in varResults)
  {
   ....
  }
 }
 catch (Exception ex)
 {}
}

venerdì 22 agosto 2014

Ricerca con Google Api e c# da una pagina aspx

Con queste semplici righe è possibile connettersi alle Google Api tramite c# ed eseguire una ricerca con Google.
Si può creare ad esempio un pulsante che punti sul metodo e restituisca i risultati su di una listBox, una textBox per inserire la ricerca.
Per curiosità ho inserito nel webConfig l'inidirizzo di Google, ma ciò non toglie che si può facilmente inserire nel sorgente c#.
Non dimenticarsi di scaricare la libreria Newtonsoft.Json.dll e inserirla nella directory "bin" dell'applicazione insieme con il file Newtonsoft.Json.xml

//Nel WebConfig inserire l'url delle Google Api
<configuration>
  <appSettings>
  <add key="GoogleUrl" value="http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=2&q={0}&hl={1}&start={2}"/>

  
//Creare ad esempio il Model
public class SearchResultData
{
 public string url;
 public string title;
 public string content;
 public FindingEngine engine;

 public enum FindingEngine { google };

 public SearchResultData(string url, string title, string content, FindingEngine engine)
 {
  this.url = url;
  this.title = title;
  this.content = content;
  this.engine = engine;
 }
}

//Nel sorgente della pagina aspx.cs inserire le seguenti righe 
public string googleUrl = ConfigurationManager.AppSettings["GoogleUrl"].ToString();
 
public List<SearchResultData> GoogleSearch(string search_expression, string lang)
    {
 var url_template = googleUrl;
 if (lang.Equals(""))
  lang = SpiderObj.Languages.Code.codeEN;
 Uri search_url;
 var results_list = new List<SearchResultData>();
 int[] offsets = { 0, 8, 16, 24, 32 };
 try{
  foreach (var offset in offsets)
  {
   search_url = new Uri(string.Format(url_template, search_expression, lang, offset));
   var page = new WebClient().DownloadString(search_url);
   JObject objJson = (JObject)JsonConvert.DeserializeObject(page);

   var results_query =
     from result in objJson["responseData"]["results"].Children()
     select new SearchResultData(
      url: result.Value<string>("url").ToString(),
      title: result.Value<string>("title").ToString(),
      content: result.Value<string>("content").ToString(),
      engine: SearchResultData.FindingEngine.google
      );

   foreach (var result in results_query)
    results_list.Add(result);
  }
 }
 catch (Exception ex)
 {
  log.Error(ex);
  throw new Exception("");
 }
 return results_list;
    }

martedì 24 giugno 2014

Upload di file multipli in .Net con c#

Con poche righe di codice è possibile eseguire upload di file multipli in un sito web su piattaforma .Net con linguaggio c#.
E' molto importante ricordare nel "form" la proprietà enctype="multipart/form-data" e nell'oggetto "input" la proprietà multiple="multiple"
Nell'esempio è presente la parte client/html (Default.aspx), il codice associato (Default.aspx.cs) e le immagini d'aiuto.

Default.aspx
<asp:%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>asp:
<asp:html xmlns="http://www.w3.org/1999/xhtml">asp:
<asp:head runat="server">asp:
    <asp:title>asp:<asp:/title>asp:
<asp:/head>asp:
<asp:body>asp:
    <asp:form id="form1" runat="server" enctype="multipart/form-data"  method="post" >asp:
        <asp:table cellpadding="2" cellspacing="1" width="740px">asp:
            <asp:tr>asp:
                <asp:td width="120px">asp:
                    <asp:input type="file" id="File1" multiple="multiple" name="File1" runat="server" />asp:
                <asp:/td>asp:
            <asp:/tr>asp:
            <asp:tr>asp:
                <asp:td align="left">asp:
                    <asp:asp:Button id="Manual" Text="Upload" runat="server" OnClick="Upload_Click"  />asp:
                <asp:/td>asp:
            <asp:/tr>asp:
            <asp:tr>asp:
                <asp:td colspan="4">asp:
                    <asp:asp:ListBox ID="list_message" name="list_message" runat="server" width="600px" Height="200px">asp:<asp:/asp:ListBox>asp:
                <asp:/td>asp:
            <asp:/tr>asp:
        <asp:/table>asp:
    <asp:/form>asp:
<asp:/body>asp:
<asp:/html>asp:
Default.aspx.cs
public partial class _Default : System.Web.UI.Page
{
    string pathFileUploaded = "c:\\temp\\";

    protected void Page_Load(object sender, EventArgs e)
    {}
 
    protected void Upload_Click(object sender, System.EventArgs e)
    {
        if ((File1.PostedFile != null) && (File1.PostedFile.ContentLength >asp: 0))
        {
            HttpFileCollection uploadedFiles = Request.Files;
            for (int i = 0; i <asp: uploadedFiles.Count; i++)
            {
                HttpPostedFile userPostedFile = uploadedFiles[i];
                try
                {
                    if (userPostedFile.ContentLength >asp: 0)
                    {
                        string fn = System.IO.Path.GetFileName(userPostedFile.FileName);
                        try
                        {
                            userPostedFile.SaveAs(pathFileUploaded + fn);
                            list_message.Items.Add(userPostedFile.FileName + " inviato.");
                        }
                        catch (Exception ex)
                        {
                           list_message.Items.Add("Errore: " + ex.Message);
                        }
                    }
                }
                catch (Exception Ex)
                {
                   list_message.Items.Add("Errore: " + Ex.Message);
                }
            }
        }
        else
        {
            list_message.Items.Add("Selezionare almeno 1 file.");
        }
    }
}



mercoledì 5 dicembre 2012

Creazione e popolamento dati di una TreeView in una .aspx

In questo esempio è rappresentata la creazione di una TreeView e di un suo popolamento statico (ossia non da db o da file) in c#.
Nella prima parte viene indicato l'oggetto nella pagina, nella seconda il codice da integrare per il caricamento di esempio.

Parte da integrare nella pagina .aspx
<asp:TreeView ID="treeview_example" runat="server" Width="220" ShowCheckBoxes="Leaf">
 <DataBindings>
  <asp:TreeNodeBinding DataMember="siteMapNode" TextField="title" ValueField="resourceKey"
   SelectAction="None" />
 </DataBindings>
</asp:TreeView>
Codice da integrare nel file .aspx.cs
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        PopulateTreeView();
    }

    protected void PopulateTreeView()
    {
        DataTable dataTable = null;
        try
        {
            dataTable = new DataTable("dt");
            dataTable.Columns.Add(new DataColumn("value", typeof(int)));
            dataTable.Columns.Add(new DataColumn("area", typeof(string)));
            dataTable.Columns.Add(new DataColumn("type", typeof(string)));
            DataRow dataRow = dataTable.NewRow();
            dataRow = dataTable.NewRow();
            dataRow["value"] = "1";
            dataRow["area"] = "Example root";
            dataRow["type"] = "Check 1";
            dataTable.Rows.Add(dataRow);

            dataRow = dataTable.NewRow();
            dataRow["value"] = "2";
            dataRow["area"] = "";
            dataRow["type"] = "Check 2";
            dataTable.Rows.Add(dataRow);

            dataRow = dataTable.NewRow();
            dataRow["value"] = "3";
            dataRow["area"] = "";
            dataRow["type"] = "Check 3";
            dataTable.Rows.Add(dataRow);

            /*...*/

            TreeNode rootNode = new TreeNode();
            if ((dataTable != null) && (dataTable.Rows.Count != 0))
            {
                DataView dataView = new DataView(dataTable);
                foreach (DataRowView r in dataView)
                {
                    if ("" != (string)r["area"])
                        rootNode = AddNode("", (string)r[1].ToString(), "Folder", treeview_example.Nodes);

                    AddNode(r[0].ToString(), (string)r[2].ToString(), "Page", rootNode.ChildNodes);
                }
            }
            else
            {
                //...do something
            }
        }
        catch (Exception ex)
        {
            //log.Error(ex);
        }
        if (dataTable != null)
            dataTable.Dispose();
    }

    private TreeNode AddNode(string id, string text, string type, TreeNodeCollection nodeCollection)
    {
        TreeNode node = new TreeNode(id);
        node.Value = id;
        node.Text = text;
        nodeCollection.Add(node);
        return node;
    }
}
Output:


domenica 11 novembre 2012

Creazione e popolamento dati in una DropDownList in una .aspx

In questo esempio è rappresentata la creazione di una DropDownList e di un suo popolamento statico (ossia non da db o da file) di 10 numeri in un ciclo for in c#.
Nella prima parte viene indicato l'oggetto nella pagina, nella seconda il codice da integrare per il caricamento di esempio.

Parte da integrare nella pagina .aspx
<asp:DropDownList ID="DropDownList1" runat="server"
 DataValueField="example_value" DataTextField="example_value" 
 AutoPostBack="False">
</asp:DropDownList>
Codice da integrare nel file .aspx.cs
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        PopulateDropDownList();
    }

    protected void PopulateDropDownList()
    {
        DataTable dataTable = null;
        try
        {
            dataTable = new DataTable("dt");
            dataTable.Columns.Add(new DataColumn("example_value", typeof(string)));
            DataRow dataRow = dataTable.NewRow();

            DateTime date;
            date = DateTime.Now;

            dataRow = dataTable.NewRow();
            dataRow["example_value"] = "";
            dataTable.Rows.Add(dataRow);
            for (int i = 1; i < 11; i++)
            {
                dataRow = dataTable.NewRow();
                dataRow["example_value"] = i.ToString();
                dataTable.Rows.Add(dataRow);
            }

            DropDownList1.DataSource = dataTable;
            DropDownList1.DataBind();
        }
        catch (Exception ex)
        {
            //log.Error(ex);
        }
        if (dataTable != null)
            dataTable.Dispose();
    }
}
Output: