lunedì 26 ottobre 2026

C# Windows Forms, copiare un immagine negli appunti

Il seguente frammento di codice, scritto in C# per un'applicazione Windows Forms, consente di copiare negli appunti di Windows l'immagine visualizzata in un controllo PictureBox.


C#

if (pcbAnteprima.Image == null)

{

    MessageBox.Show("Nessuna immagine selezionata.");

    return;

}

Clipboard.SetImage(pcbAnteprima.Image);


domenica 25 ottobre 2026

C# Windows Forms: impostare valore e testo di una ComboBox

Il frammento di codice seguente illustra una tecnica per associare un valore a un elemento di una ComboBox in un'applicazione Windows Forms, utilizzando C# .

C#

  comboBox1.DisplayMember = "Text";

  comboBox1.ValueMember = "Value";

 

  comboBox1.Items.Add(new { Value = "MioValore", Text = "TestoDaVisualizzare" });























sabato 24 ottobre 2026

Posta elettronica Tiscali: come risolvere l'errore "Bad Request - Size of a request header field exceeds server limit"

 

errore posta elettronica tiscali


Quando si utilizza il servizio di posta elettronica di Tiscali accedendo direttamente dal sito ufficiale, può capitare di riscontrare un errore che mostra una pagina bianca con il seguente messaggio:

Bad Request

Your browser sent a request that this server could not understand.

Size of a request header field exceeds server limit.

Apache/2.4.68 (Debian) Server at default Port 80


Se questo errore si verifica con un browser, ad esempio Google Chrome, ma non con un altro, come Microsoft Edge, una possibile soluzione consiste nell'eliminare i dati memorizzati dal browser per il sito interessato.

In particolare, potrebbe essere necessario eliminare i cookie del sito, che possono contenere informazioni di dimensioni eccessive per il limite accettato dal server.

Vediamo come procedere.

Per prima cosa, facciamo clic sui tre puntini in alto a destra nella finestra del browser, come mostrato nella figura 1.


errore posta elettronica tiscali
Figura 1 - I puntini per aprire il menu.


Facendo clic con il tasto sinistro del mouse sui tre puntini, si aprirà un menu a discesa. Tra le voci disponibili, selezioniamo "Impostazioni", come mostrato nella figura 2.

errore posta elettronica tiscali
Figura 2 - Il menu del browser Chrome


Nella finestra che si apre, sul lato sinistro (figura 3), troviamo una serie di voci. Facciamo clic sulla voce "Privacy e sicurezza".

errore posta elettronica tiscali


Figura 3 - La voce di menu per la sicurezza e la privacy

Dopo aver fatto clic su "Privacy e sicurezza", nella parte centrale della finestra troviamo diverse opzioni. Quella che ci interessa è "Impostazioni sito" (figura 4), che consente di gestire i dati e le autorizzazioni relativi ai singoli siti web nel browser Chrome.

errore posta elettronica tiscali
Figura 4 - La voce delle impostazioni.

Dopo aver fatto clic sulla voce "Impostazioni sito", si aprirà una nuova schermata, nella quale troveremo un'opzione denominata "Visualizza le autorizzazioni e i dati memorizzati sui siti", come mostrato nella figura 5.


errore posta elettronica tiscali
Figura 5 - La voce di menu per accedere alle informazioni dei dati salvati.


Dopo aver fatto clic su tale voce, si aprirà una pagina nella quale sono elencati i siti web visitati. Cerchiamo quello relativo a Tiscali.

Una volta individuato il sito, sulla destra troveremo un'icona a forma di cestino, come mostrato nella figura 6.

errore posta elettronica tiscali
Figura 6 - L'icona a forma di cestino accanto alla voce Tiscali



Questo pulsante ci permette di cancellare i dati memorizzati per il sito selezionato.

Dopo aver confermato la cancellazione, chiudiamo il browser Chrome e lo riapriamo. Successivamente, visitiamo il sito www.tiscali.it e accediamo alla posta elettronica di Tiscali.


Conclusioni

In questo articolo abbiamo illustrato una delle possibili soluzioni al problema che impedisce di accedere al servizio di posta elettronica di Tiscali tramite il browser. Questo inconveniente può rendere temporaneamente inaccessibile la propria casella di posta elettronica online.

La cancellazione dei dati memorizzati per il sito, in particolare dei cookie, può risolvere il problema e consentire nuovamente l'accesso alla posta elettronica.

giovedì 22 ottobre 2026

C# .NET 10 – Come verificare la validità del certificato di firma digitale di un file .p7m

In questo esempio vedremo come, in un progetto .NET 10 sviluppato in C#, sia possibile verificare la validità di un certificato digitale.
L'esempio utilizza esclusivamente le classi messe a disposizione dal framework .NET, senza ricorrere a librerie esterne.
Di seguito vedremo come verificare le date di validità del certificato, controllare la catena di certificazione e verificare l'eventuale revoca.


C#

private void VerificatoStatoCertificato(X509Certificate2 certificate)

 {

     // --- CONTROLLO  SCADENZA in maniera Semplice ---

     DateTime oggi = DateTime.Now;

     if (oggi < certificate.NotBefore)

     {

         MessageBox.Show($"Il certificato non è ancora valido.\nInizio validità: {certificate.NotBefore}",

             "Certificato Non Valido", MessageBoxButtons.OK, MessageBoxIcon.Warning);

         return;

     }

     if (oggi > certificate.NotAfter)

     {

         MessageBox.Show($"Il certificato è SCADUTO.\nData di scadenza: {certificate.NotAfter}",

             "Certificato Scaduto", MessageBoxButtons.OK, MessageBoxIcon.Error);

         return;

     }

 

     // --- CONTROLLO REVOCA E CATENA scenario Avanzato  ---

     using (X509Chain chain = new X509Chain())

     {

         // Configurazione della politica di validazione

         chain.ChainPolicy.RevocationMode = X509RevocationMode.Online; // Forza controllo revoca online (CRL/OCSP)

         chain.ChainPolicy.RevocationFlag = X509RevocationFlag.ExcludeRoot; // Non controlla la revoca della Root CA

         chain.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;

 

         // Build() esegue la verifica effettiva

         bool isValidChain = chain.Build(certificate);

 

         if (isValidChain)

         {

             MessageBox.Show("Il certificato è VALIDO, non è scaduto e non risulta revocato.",

                 "Verifica Completata", MessageBoxButtons.OK, MessageBoxIcon.Information);

         }

         else

         {

             // Se isValidChain è false, analizziamo i motivi specifici (es. Revocazione)

             string erroriTrovati = "";

             foreach (X509ChainStatus status in chain.ChainStatus)

             {

                 // Filtriamo per trovare specificamente la revoca

                 if (status.Status == X509ChainStatusFlags.Revoked)

                 {

                     erroriTrovati += " IL CERTIFICATO È STATO REVOCATO!\n";

                 }

                 else

                 {

                     erroriTrovati += $"  {status.Status}: {status.StatusInformation}\n";

                 }

             }

 

             MessageBox.Show($"Il certificato non è valido:\n\n{erroriTrovati}",

                 "Errore Validazione", MessageBoxButtons.OK, MessageBoxIcon.Error);

         }

     }

 }

 



Di seguito l'esempio di codice per invocare la funzione appena descritta.


C#

private void BtnVerifica_Click(object sender, EventArgs e)

{

    if (string.IsNullOrEmpty(TxtPercorsoFileP7mVerifica.Text.Trim()))

    {

        Utility.MessaggioInfo("Selezionare un file firmato di tipo .p7m");

 

        return;

 

    }

 

    X509Certificate2 certificate = new X509Certificate2(TxtPercorsoFileP7mVerifica.Text.Trim());

 

    //Invoca la funzione

    VerificatoStatoCertificato(certificate);

}




mercoledì 21 ottobre 2026

Quattro milioni di visitatori: grazie a tutti!

 



Da pochi giorni il blog ha superato i quattro milioni di visitatori. È un risultato che mi fa davvero molto piacere e che spero sia anche il segno di quanto questo spazio possa essere apprezzato e utile a tanti navigatori del web.

In questi anni ho condiviso tanti argomenti in ambito informatico, senza altre finalità se non quella di aiutare e mettere a disposizione le mie conoscenze. Con il tempo, il blog è diventato anche un archivio personale, un luogo in cui raccogliere codice, risorse e siti web da ritrovare e consultare quando ne ho bisogno.

Nel corso di questi anni ho avuto anche l'opportunità di conoscere tante persone, sia virtualmente sia di persona. Ed è sempre un grande piacere: per me il contatto umano conta tanto, moltissimo.

Continuerò a condividere nuovo materiale, con aggiornamenti costanti, articoli e notizie.

Grazie a tutti coloro che sono passati di qui, che mi hanno letto e che continuano a seguire il blog. Questo traguardo è anche vostro!


martedì 20 ottobre 2026

download video gioco Lineage 2 Essence

 

gioco gratuito Lineage 2 Essence

Lineage 2 Essence è un videogioco di ruolo online multigiocatore di massa (MMORPG), ambientato in un mondo fantasy e caratterizzato da combattimenti PvP, assedi ai castelli e raid contro potenti boss.

Il gioco è disponibile gratuitamente sull’Epic Games Store per sistemi operativi Windows. Sebbene sia free-to-play, include acquisti opzionali all’interno del gioco.

La classificazione PEGI è 12, con contenuti che includono violenza moderata e linguaggio volgare lieve. Sono inoltre presenti interazioni online e acquisti in-game.

Per maggiori informazioni e per scaricare gratuitamente il gioco, visitate la pagina ufficiale dell’Epic Games Store. https://store.epicgames.com/p/lineage-2-essence-8013ce

lunedì 19 ottobre 2026

C# Windows Forms: verificare la scadenza del certificato di un file firmato digitalmente (.p7m)

Quando si lavora con documenti firmati digitalmente, può essere utile verificare se il certificato digitale utilizzato dal firmatario ha superato la propria data di scadenza.

In questo articolo vedremo come effettuare questo controllo utilizzando le classi messe a disposizione dal framework .NET, senza ricorrere a librerie di terze parti.

Verificare la data di scadenza del certificato
.NET mette a disposizione la classe X509Certificate2, che consente di accedere alle informazioni contenute in un certificato X.509, tra cui la data di inizio e di fine validità.

La proprietà NotAfter, in particolare, restituisce la data di fine validità del certificato.

Il seguente frammento di codice mostra come confrontare tale data con quella corrente: 

C#

X509Certificate2 certificato = new X509Certificate2(PercorsoNomeFileP7m)

DateTime oggi = DateTime.Now;

if (oggi > certificato.NotAfter)

{

    MessageBox.Show($"Il certificato è SCADUTO.\nData di scadenza: {certificato.NotAfter}",

        "Certificato Scaduto", MessageBoxButtons.OK, MessageBoxIcon.Error);

    return;

}

 

Nell'esempio, PercorsoNomeFileCertificato rappresenta il percorso del file contenente il certificato X.509.

Se la data corrente è successiva alla data indicata dalla proprietà NotAfter, il certificato viene considerato scaduto.

Nota: il codice mostrato verifica esclusivamente la data di scadenza del certificato. Non controlla, da solo, la validità complessiva del certificato né l'autenticità della firma digitale.