giovedì 29 aprile 2021

Telerik - Visual Studio - The specified task executable "lc.exe" could not be run

Succede quando aggiungete in un progetto su Visual Studio un controllo Telerik (per esempio in una pagina .aspx o in un controllo .ascx). L'errore completo è 





Basta in Visual Studio cambiare la Build Action da "Embedded Resource" a "None".




 


venerdì 16 aprile 2021

Telerik RadAsyncUpload

 Un post veloce (anche per mio futuro remainder) sul componente Telerik RadAsyncUpload. Ricordarsi sempre di configurare con i giusti permessi la cartella temporanea che utilizza per l'upload dei file (quella di default è \App_Data\RadUploadTemp ), altrimenti vi darà l'errore mostrato qui sotto.



La soluzione migliore è gestire via codice il salvataggio del file sull'evento FileUploaded

protected void RadAsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)
{
    //Get reference of the RadAsyncUpload
    RadAsyncUpload upload = (RadAsyncUpload)sender;
 
    //UniqueID
    var id = Guid.NewGuid().ToString();
 
    //Generate the Target folder according to the Test's ID
    string target = Server.MapPath("~/Tests/" + id.ToString() + "/");
 
    //Check if the generated target folder exists. If it doesn't create it.
    if(!Directory.Exists(target))
    {
        Directory.CreateDirectory(target);
    }
 
    //Get the full file name
    string fullFileName = target + e.File.FileName;
    //Save the file
    e.File.SaveAs(fullFileName);
}





martedì 13 aprile 2021

Link diretto al download del file su OneDrive for Business

 La funzionalità "Copy Link" di Onedrive for business crea sempre dei link indiretti al file da scaricare. Per ottenere il link diretto (da utilizzare per esempio in Download Manager per Chrome), basta utilizzare la funzionalità "Copy Link" e scegliere "People with existing access" e dal link così ottenuto eliminare tutto ciò che c'è dopo il "?" e sostituirlo con "?download=1"

https://mytenant-my.sharepoint.com/:w:/r/personal/tenant_onmicrosoft_com/Documents/Documento.docx?d=wf97c18d1857745d3b8e0b14c1afa9f6b&csf=1&web=1&e=JLfBTr 

diventa

https://mytenant-my.sharepoint.com/:w:/r/personal/tenant_onmicrosoft_com/Documents/Documento.docx?download=1




martedì 30 marzo 2021

Use Information List

 In Sharepoint fin dalla versione 2007, in ogni sitecollection esiste una lista nascosta raggiungibile dall'URL [site collection url]/_catalogs/users/simple.aspx . Questa lista contiene informazioni sugli utenti quali Email, DisplayName, LoginName, ecc.


Per interagire con gli SPListItem della lista si puà utilizzare del codice simile a questo

// Instantiates the User Information List 
SPList userInformationList = SPContext.Current.Web.SiteUserInfoList;

// Get the current user 
SPUser user = SPContext.Current.Web.EnsureUser(@"MYDOMAIN\myUser");

// The actual User Information is within this ListItem 

SPListItem userItem = userInformationList.Items.GetItemById(user.ID);



lunedì 21 dicembre 2020

JSON in Sharepoint Document Library

Come certamente saprete tutti, i file con estensione .json NON possono essere caricati in una Document Library e comunque non verranno mai acceduti attraverso Sharepoint. Il motivo non viene mai esplicitato con chiarezza, ma è facilmente spiegabile. Nel web.config delle web application Sharepoint c'è la seguente entry nella sezione "handlers".

<handlers>

   <add name="JSONHandlerFactory" path="*.json" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, 

     System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 

     resourceType="Unspecified" preCondition="integratedMode" />

</handlers>

L'estensione .json in SharePoint è riservata ai .json enabled web services, in particolare la REST API per le operazioni client side. A causa dell'handler mostrato qui sopra anche se fossi in grado di caricare i miei file .json, avrei degli errori nel tentativo di accedervi a causa dell'handler che si frappone alla chiamata. L'estensione .json risulta così bloccata per mantenere l'integrità all'interno di SharePoint, come anche per l'estensione .aspx (tranne in Pages e Site Pages) e altri formati Web. Per aggirare questa limitazione basta rinominare il file .json in (per esempio) .txt.

venerdì 4 dicembre 2020

Power BI Query Code Branching

In qualunque linguaggio di programmazione vi sarete imbattuti nel "Conditional Code Branching" (in pratica l'If..Then..Else 😀). 

Se avete lavorato con Power BI, vi sarete anche imbattuti in Power Query soprattutto per l'acquisizione di dati da fonti dati esterne. 

Come funzionano questi due concetti messi insieme? In maniera piuttosto complessa e che richiede un bel po' di "pensiero laterale" è la risposta (vedi qui). 

In pratica il problema consiste nel fatto che M è un linguaggio funzionale, non imperativo, quindi ogni statement è una chiamata di funzione che ritorna un valore. 

Quindi per poter 'simulare' il blocco If..Then..Else va ripensato il tutto e gestirlo come un blocco "Then,,Else,,If". Mi spiego meglio: dato che è un linguaggio funzionale devo preparare il risultato del "Then", poi quello dell'"Else" e poi decidere quale ritornare con l'If. 


Esempio:

let

    Source = Table1,

    //THEN Code Block 

    #"ModifiedThenTable" = [your code here]    

    //ELSE Code Block 

     #"ModifiedElseTable" = [your code here]   

    result = 

        if [condition]

        then #"ModifiedThenTable"

        else #"ModifiedElseTable"

in

    #"result"

venerdì 25 settembre 2020

ASP.Net inline Expressions

 

Come troppo spesso ci si dimentica le Inline Expressions vengono utilizzate per scrivere codice lato server direttamente su aspx, ascx, pagine o file javascript

In realtà sono più complesse di come le utilizziamo solitamente e qui di seguito riporto tutte le possibili varianti:

  • <%...%> esegue normale codice server side (C#,VB.Net)


  • <%=...%> equivale a Response.Write()


  • <%#...%> utilizzata per il databinding


  • <%$...%> ritorna il valore di un espressione e può essere utilizzata in parameri 


  • <%@...%> utilizzata per le page directives, di solito all'inizio del file ASPX




  • <%--...--%> utilizzata per i commenti


  • <%:...%> è equivalente a <%= ma esegue l'HTML-encode del valore