Resumé

Recupera NamedPermissionSets a Runtime con C-Sharp

Cristian Merighi () 0,00

Qualche semplice riga di codice C# per riuscire a recuperare i settings sulle Security Policies in ambiente hosting. Utile in ambito di custom trust configuration.
Questo articolo è da considerarsi obsoleto. Alcune funzionalità potrebbero non essere più disponibili e non è possibile aggiungere commenti.

Le configurazioni dell'Hosting Provider possono risultare molto ostili, specie se non le conosci :).
Una configurazione medium trust può venir customizzata a tal punto che il deployment dell'applicativo dall'area di staging a quella definitiva può essere paragonato ad una sfida alla roulette russa.
Ovviamente sarebbe opportuno approntare un'area di sviluppo che speculare a quella di produzione, ma a questo arrivo dopo...

I file di configurazione custom (li trovate annidati nella cartella {WINDIR}\Microsoft.NET\Framework\v2.0.50727\CONFIG) sono files xml costituiti da una serie di nodi che specificano i criteri con cui il runtime può accedere alle varie sezioni di codice.
Permettono di fare qualcosa e negano di fare altro.
Il diniego si palesa sotto forma di Security.Exception (che equivale ad applicativo non funzionante).

Come riprodurre una configurazione uguale a quella del provider, quindi?

  1. Innanzitutto prova a chiedere gentilmente al tuo fornitore di spazio web di ...fornire un esmpio del file .config usato nella farm.
  2. Se ti vedi rispondere picche a causa di non meglio specificati "motivi di sicurezza" (sto semplicemente portando la mia esperienza), imbraccia il tuo fucile caricato a C# managed e comincia a ...scrivere codice (nulla di cruento)!

Sono necessarie poche righe di codice ed un paio di iterazioni per recuperare le informazioni cercate. Date un occhio al codice sotto...

// ...
System.Collections.IEnumerator levels =
    System.Security.SecurityManager.PolicyHierarchy();
while (levels.MoveNext())
{
    System.Security.Policy.PolicyLevel level = (System.Security.Policy.PolicyLevel)levels.Current;
    foreach (object nmed in level.NamedPermissionSets)
    {
        System.Security.NamedPermissionSet item = (System.Security.NamedPermissionSet)nmed;
        System.Collections.IEnumerator permissions = item.GetEnumerator();
        while (permissions.MoveNext())
        {
            System.Security.IPermission permission = (System.Security.IPermission)permissions.Current;
            System.Security.SecurityElement iperm = permission.ToXml();
            Response.Write("<xmp>" + iperm.ToString() + "</xmp>");
        }
    }
}

Spero possa servire.

Take care. Bye.

feedback
 

Syndicate

Autore

Cristian Merighi facebook twitter google+ youtube

Ultimi articoli

Top rated

Archivio

Dove sono?

Autore

Cristian Merighi facebook twitter google+ youtube

Le mie letture

Feeds