DotNet Core “Unable to load DLL ‘System.Security.Cryptography.Native” error

I was trying to play with DotNet Core in Visual Studio Code, and I was following the instructions as stated here.

After installed Brew I installed the latest version of OpenSSL as required by DotNet Core and then I tried to run the classic “Hello World” program, but the command

dotnet restore

failed with this error:

“Unable to load DLL ‘System.Security.Cryptography.Native”

This error has to do with OpenSSL, or even better with Brew that refuseed to correctly link OpenSSL.

Here is the correct command sequence that needs to correctly setting up OpenSSL for DotNet Core.

brew update
brew install openssl
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/Cellar/openssl/1.0.2j/bin/openssl openssl

Hope this helps

Blog moved to WordPress

It’s long time I don’t write anything on this blog, I was very busy in recent times, but now the time has come and I intend to regain the time lost.

When I came back to this blog, the first thing I noticed were the look & feel and the software engine on which it was based, SubText, a very old bog software, but still widely used, so I decided to move it to another platform, possibly in step with times, and my choice was WordPress.

Now this blog is based on WordPress engine the most popular online publishing platform, currently powering more than 20% of the web.

Here are the necessary steps (and troubleshooting) to move an entire blog content based on SubText to WordPress:

STEP 1: Subtext – Export your blog content

This is a “one choice” step, because SubText exports its content only in BlogML format, based on XML, and creates an XML file with all your posts, your categories and son forth. To accomplish this, logon to SubText as administrator, go to “Options > Import/Export” and click on the Save button. The check “embed attachment” must remain unchecked otherwise WordPress won’t be able to import the file.

The file’s content is base64 encoded, so I was recommended to convert it as normal text. Don’t worry, fortunately there always are other people who had before the same problem as you had. Not that writing a very little program that convert the file’s content from base64 encode to normal text is a particularly difficult task, but if things are already done it’s better! So if you surf here you can copy and past the code, compile it, run it, and have the file correctly converted.

STEP 2: WordPress – configure the permalink structure

This step is strongly recommended if you don’t want that the structure of all URL’s doesn’t change compared to the URL’s structure of the SubText blog.so as not to lose the Google indexing of your blog. Then the URL’s structure of the WordPress based blog must remain the same.

To accomplish this, you need to change the permalink structure in WordPress. After you login as administrator, go to “Settings > Permalink” and check “Custom structure”, then typing this URL structure:

/archive/%year%/%monthnum%/%day%/%postname%.aspx

This is exactly the URL’s structure used by SubText. Note the “ASPX” suffix, even if WordPress isn’t an ASP .NET application.

This picture may helps:

Schermata 2014-09-18 alle 22.59.53.png

STEP 3: WordPress – import your blog using the BlogML WordPress plugin importer.

This plugin is built in into WordPress installation, so it’s nothing to download and install. Just click to “Tools > Import” and then choose BlogMl importer, upload the file XML generated at step 1 and click the button “Upload file and import”

Schermata 2014-09-18 alle 23.10.10.png

Just a few seconds and your blog is imported in WordPress and is up and running!

STEP 4: WordPress – troubleshooting.

1) The BlogML Importer plugin doesn’t import blog categories correctly. They have been imported with the ID they had in SqlServer SubText repository in place of description. You must correct them manually.

2) The RSS Feed wasn’t generated correctly; the procedure ended with a XML parsing error, as shown in this picture:

Schermata 2014-09-18 alle 23.34.06.png

and it seems to be related to some whitespace or blank lines into the various *.php files of the WordPress installation, or with custom permalinks that break RSS feed, like they said here

This problem was quite difficult to resolve and it took several time and Google searching.

Initially I founded this WordPress Fix plugin, I tried it but it fixed anything, on the contrary it said that my RSS feed was working well and that all was fine!

After an hour of Google searching, I found the solution in this Peter Krzyzek’s post, and I can never be grateful enough to the author for having solved this problem.

These are the steps you have to do:

– Download this: http://wejn.org/stuff/wejnswpwhitespacefix.php (this is a php file)

– Copy this file in the ROOT folder of your WordPress installation

– Edit the index.php file in the ROOT folder and add the followings:

include(“wejnswpwhitespacefix.php”);

after the first line, e.g. just after the <?php line

– Reload the page and….BOOM….IT WORKED!!!!!!

I don’t know anything about php, I’m a .Net developer, and without that post I will never solve this problem.

Thank you Peter!

Installazione di Visual Studio 2010 RC fallita – File “vs_setup.msi is invalid”

Installando Visual Studio 2010 RC Premium ottengo questo errore bloccante:

File vs_setup.msi is invalid.

Sono in attesa di una risposta dal supporto Microsoft, dove ho aperto un ticket.

Chissà  se qualche lettore di questo blog, occasionale o no, ha già  una risposta a questa issue.

Ci spero!

UPDATE: La soluzione a questo inconveniente, che pochi sventurati al mondo hanno avuto (cosa che ho riscontrato leggendo i forum Microsoft)  è scaricarsi direttamente il file ISO ed installare il tutto da lì, e non utilizzare invece il download dei 4 file separati che compongono l’ISO stesso.

L’evento page load è eseguito 2 volte

Convertire un progetto ASP .NET dalla versione 1.1 ad una versione successiva del .NET Framework nasconde un inconveniente a cui occorre porre rimedio manualmente.

L’inconveniente è dovuto alla introduzione delle partial class a partire dalla versione 2.0 del .NET Framework, in contrapposizione al codice generato dal designer nella versione 1.1.

Questo fa si che importando il codice sorgente nella nuova versione utilizzata ci si ritrovi, ad esempio, con un event handler come questo nel metodo InitializeComponent

 private void InitializeComponent() 
 { 
     this.Load += new System.EventHandler(this.Page_Load); 
 }

Questo innocente codice derivante dalla conversione fa in modo che l’evento Page Load sia generato 2 volte, una volta dall’handler presente nella partial class ed una volta da quello presente nel metodo InitalizeComponent.

Per eliminare questo fastidioso inconveniente è sufficiente rimuovere l’handler presente nel metodo InitializeComponent

Visual studio ide crash #2

Avevo già parlato qui (post immediatamente sotto :-)) di uno strano crash di Visual Studio 2008 SP1, a seguito dell’esecuzione comando “Choose items” della toolbox.

Il problema sembrava essere dovuto alla presenza dei PowerCommands e di una loro presunta incompatibilità con il Service Pack 1. Infatti per poter tornare alla “normalità” era necessario un’azione estrema, ovvero rimuovere i PowerCommands, ed a quel punto il problema spariva.

Oggi scopro che attraverso un assemply redirection nel file di configurazione di Visual Studio (devenv.exe.config) il problema si risolve definitivamente, e che il crash si verificava anche nell’editor XAML. Maggiori info qui.

Quindi la soluzione è inserire questo frammento XML nel file di configurazione di Visual Studio:

Visual studio 2008 ide crash dopo "Choose items" dalla toolbox

Qualche giorno fa mi sono imbattuto in uno strano crash di Visual Studio 2008, dopo aver installato il Service Pack 1, vale a dire che il comando “Choose items” della toolbox era capace di mandare in crash l’intero IDE, scrivendo un laconico messaggio nell’Event viewer, del tipo

NET Runtime version 2.0.50727.3053 – Fatal Execution Engine Error (7A035E00) (80131506)

di nessuna utilità per la risoluzione del problema,  senza possibilità di scampo quindi. Dopo aver cercato invano per la rete per evitare di perdere ulteriore tempo ho evitato di disporre del controllo che mi interessava nella toolbox (precisamente una PropertyGrid) e l’ho inserito direttamente nel markup XAML della mia applicazione (una XBAP application).

Oggi ho letto questo post di Nazareno e speravo veramente di risolvere il problema, anche perchè questa volta la toolbox era indispensabile poichè dovevo inserire una intera suite di controlli.

Purtroppo non c’è stato niente da fare. Il problema sparisce solo dopo aver disinstallato i Power Commands, senza più reinstallarli.  Ma sono abituato ai Power Commands  e li trovo veramente utili.

Vale a dire che li disintallerò solo per utilizzare la toolbox, e poi li reinstallerò di nuovo…:-)

Impossibile aggiungere una service reference in visual studio 2008

Questo workaround spero sia utile a chi si è trovato nella stessa mia situazione, e cioè che improvvisamente Visual Studio 2008 si rifiuta di aggiungere una Service Reference ad un servizio WCF, dando questo errore:

The components required to enumerate web references are not installed on this computer. Please re-install Visual studio.

Ho poi scoperto che il problema si presentava anche aggiungendo semplici web reference (ASP .NET web services) a progetti creati con Visual Studio 2005.

Per risolvere il problema non è mica necessario reinstallare Visual Studio 🙂

Basta lanciare l’ambiente di sviluppo da prompt dei comandi (quello di Visual Studio) con il parametro /resetskippkgs, quindi in questo modo:

devenv /resetskippkgs

Il parametro /resetskippkgs impedisce che siano caricati eventuali VSPackages aggiuntivi, che potrebbero creare problemi con lo startup dei componenti di Visual Studio. Era proprio quello che accadeva a me. Chiaramente basta lanciare solo una volta Visual Studio in quel modo, giusto per disabilitare il caricamento dei VSPackages.

Visual source safe – troubleshooting

Nel mio lavoro quotidiano come consulente uso spesso e volentieri Visual Source Safe (sigh!)  come repository del codice sorgente. Come chi già lo usa sicuramente ben sa, Source Safe è un prodotto ormai datato che si porta dietro un pò di problemi di varia natura. Quindi, non è sempre facile “addomesticarlo” per ottenere quello che si vuole. Appunto un paio di workaround su come evitare certe situazioni che possono portare a problemi:

  1. Se si usa una cartella diversa da c:\inetpub\wwwroot per salvare i propri progetti web, non usare mai il comando File|Open fron Source Control. Questo comando, a dispetto della working folder impostata, salverà sempre il progetto web in una sottodirectory della directory c:\inetpub\wwwroot, con il risultato di avere una doppia copia del progetto web sulla propria macchina se si è scelto di utilizzare una directory differente per il proprio progetto. Questo comportamento si può evitare impostando la virtual directory della propria applicazione (che dovrà puntare alla directory fisica prescelta) PRIMA di eseguire il comando “Open from Source Control”.
  2. Source Safe NON è transazionale, quindi un crash del sistema nel bel mezzo di una operaizione di scrittura porta quasi sempre a corruzione del database, non sempre risolvibili attraverso l’utility “Analyze
  3. L’esecuzione del comando “Analyze” come pure di altri comandi di diagnostica non và a buon fine se risultano utenti ancora connessi al database; questo è anche logico, se non fosse per il fatto che non esiste un metodo “pulito” per disconnettere utenti che risultano ancora connessi. Per far questo occorre utilizzare alcuni strumenti del sistema operativo per disconnettere forzatamente un utente dalla rete.
  4. Effettuare un backup dell’intero database quanto più frequentemente possibile

IIS ASP .NET Tab missing

Vi è mai capitato che nella console di amministrazione di IIS per una certa web application sparisse il tab ASP .NET senza apparente motivo ?

A me sì, con tutte le conseguenze del caso, e senza che riuscissi a trovare una soluzione nei forum e user group. Ora finalmente la soluzione esiste.

E’ spiegata in modo dettagliato in questo post, ed inoltre, come afferma l’autore del post, non esiste nessuna soluzione immediata che pone riparo a questa anomalia. 

Messaggio di errore Ambiguous match found e httpParseException

Scenario: web application che utilizza la versione 1.1 di ASP .NET migrata direttamente alla versione 3.5. Dopo la migrazione su una delle pagine ASPX viene sollevato una HttpParseException durante il caricamento della stessa. L’eccezione in questione, come si evince dal nome, viene generata dal runtime di ASP .NET quando il parsing di una pagina ASPX fallisce a runtime. Il messaggio di errore recita “Ambiguous match found”, e quindi non aiuta granchè. La cosa curiosa è che l’eccezione non si verifica in ambiente di sviluppo ma solo sulla versione di deploying dell’applicazione, quindi non è “debuggabile” in Visual Studio 2008 ( a meno di non effettuare un debug in remoto, cosa quasi mai possibile in ambiente di produzione) , e quindi non è di facile risoluzione.

In questi casi la prima cosa che penso è: sicuramente altri developers sparsi per il mondo hanno già sperimentato lo stesso problema, quindi  mi metto a perlustrare blogs e forum e normalmente alla fine il problema si risolve !

E così è stato anche stavolta, anche se le cause di questa eccezione possono essere diverse e quindi non esiste una soluzione universalmente applicabile.

Alcune delle cause che possono produrre una httpParseException sono, in ordine sparso:

  1. la pagina contiene un campo hidden che ha un ID con lo stesso nome di una variabile querystring usata dalla stessa pagina;
  2. la pagina ha un controllo (non ascx) inserito nel file ASPX (e quindi inserito nella partial class non visibile), e nel code-behind della stessa è dichiarato un altro controllo protected con lo stesso nome;
  3. la pagina contiene un controllo ASCX con lo stesso nome di un controllo nativo ASP .NET;

Tutte queste situazioni generano evidentemente una ambiguità dei tipi, che porta all’eccezione.

Inoltre,  effettuando un deploy del sito con l’opzione “non aggiornabile”, ovvero deselezionando l’opzione “Allow this precompiled site to be updateable”, l’eccezione dovrebbe scomparire, salvo poi approfondire le sue cause e riabilitare nel caso l’opzione.

Partial rendering troubleshooting

Regola importante: l’update parziale di una pagina ASP .NET 2.0 (o successivi) attraverso l’UpdatePanel di Ajax non funziona in presenza di questo tag nel file di configurazione dell’applicazione (o nel machine.config):

Infatti, con questa impostazione la proprietà “SupportPartialRendering” dell’oggetto ScriptManager ritorna il valore false.

Il tag in questione imposta la modalità di rendering dei controlli, es.:  in modalità compatibile XHTML (mode=”Transitional” o “Strict”) oppure no (mode=”Legacy”).

In ASP .NET 1.1 i controlli subivano un rendering non XHTML compatibile, e questo comportamento è stato modificato in ASP .NET 2.0, che invece effettua il rendering XHTML compliant. Questo significa che se si migra una applicazione scritta con la versione 1.1 del .NET Framework ad una versione più recente, il wizard di migrazione imposta l’xhtml conformance mode in modalità Legacy, provocando di fatto il mancato funzionamento del partial rendering. Per risolvere il problema è sufficiente impostare il tag mode a “Transitional” (valore di default) oppure “Strict”, oppure rimuovere il nodo in modo tale da assegnargli il valore  di default, es.: