Domanda

Devo dire che finora, probabilmente sono stato davvero dannatamente fortunato in quanto non ho mai incontrato i problemi associati a un sito Web in esecuzione con un livello di fiducia medio. Ho sempre sviluppato app Intranet o mi è capitato di utilizzare un'azienda di hosting che funziona in piena fiducia. Ma l'host che mi è stato chiesto di utilizzare per un recente progetto viene eseguito con un livello di affidabilità medio, quindi sto cercando di far funzionare la mia app. Un paio di domande: sviluppo su Windows XP. IIS può essere configurato per un livello di attendibilità medio (più facile da eseguire il debug) e / o è un'impostazione web.config? Esistono molte informazioni su questo argomento e la curva di apprendimento è ripida.

In secondo luogo, dopo aver manipolato e rimosso molto codice, penso che questa riga stia causando un errore di autorizzazione:

Per ogni FieldInfo come FieldInfo in Type.GetFields (BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public)

Qualcuno può chiarire che questo è un possibile candidato, esp. quella bandiera non pubblica? Questo è copia & Amp; codice incollato (Coding Horror ha evidenziato il rischio di questo) quindi non ci ho mai pensato. Suppongo che il ciclo attraversi tutti i campi dell'oggetto sia pubblici che non pubblici - e ho letto che i campi protetti sono vietati riflettendo la fiducia media.

Saluti, Rob.

È stato utile?

Soluzione

Siamo spiacenti, Reflection with NonPublic equivale alla piena fiducia.

Se in qualche modo non avessi la piena fiducia ma avessi una riflessione NonPublic, potrei sfruttarlo per cambiare il mio livello di affidabilità del codice (stringhe scrivibili, ecc.)

Altri suggerimenti

Sì, è possibile configurare un sito Web su XP per l'esecuzione con attendibilità media:

In < system.web > sezione aggiungi quanto segue:

<!-- Case is important: it's Medium, not medium -->
<trust level="Medium"/>

E ci sei.

Quello che potresti trovare è che la maggior parte degli host gestisce i loro siti in un " leggermente elevato; Medium " impostazione della fiducia, con alcuni diritti aggiuntivi oltre il valore predefinito: i loro tecnici dovrebbero essere in grado di dirti quali differenze hanno eventualmente.

Se dai un'occhiata:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web_mediumtrust.config

vedrai le impostazioni predefinite che vengono applicate.

La riflessione è una delle cose chiave che sono limitate nella fiducia Media - dalle Note su pagina GetFields :

  

Se il campo richiesto non è pubblico e il chiamante non ha ReflectionPermission per riflettere oggetti non pubblici all'esterno dell'assembly corrente, questo metodo restituisce un riferimento null (Nothing in Visual Basic).

Dato che questo ha il potenziale per restituire null, probabilmente dovresti controllare null prima di iniziare a iterare attraverso di esso, o verificare che FieldInfo non sia null / niente prima di usarlo.

Contrassegnerò questo come chiuso poiché nessuno ha risposto e inoltre si stava dimostrando troppo problematico per provare a ricodificare. Il programma non è scritto male ma usa la riflessione molto pesantemente per la mappatura degli oggetti e, a dire il vero, è più facile trovare una società di hosting che supporti la fiducia completa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top