10

Ho scritto 3 applicazioni Web ASP.net MVC e tutte sono state distribuite su server di hosting condiviso con il mio ISP.log4net lancio di Eccezione di sicurezza nell'applicazione Web ASP.Net MVC

Tutte e 3 le applicazioni sono molto simili nella configurazione e nelle impostazioni. La prima applicazione viene distribuita su un server diverso rispetto al 2 ° e 3 °. La prima applicazione non mi dà errori.

Le applicazioni 2 ° e 3 sputare il seguente SecurityExceptionpo: in modo casuale:

alt text http://i46.tinypic.com/24p9pac.jpg

Link

Eccezione Testo:

Security Exception 
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file. 

Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' failed. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 

[SecurityException: Request for the permission of type 'System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' failed.] 
    System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0 
    System.Security.CodeAccessPermission.Demand() +58 
    System.Configuration.BaseConfigurationRecord.CheckPermissionAllowed(String configKey, Boolean requirePermission, Boolean isTrustedWithoutAptca) +99 


Version Information: Microsoft .NET Framework Version:2.0.50727.3603; ASP.NET Version:2.0.50727.3082 

Viene visualizzato l'errore precedente la prima volta che accedo la pagina dopo aver distribuito o modificato il file web.config. Tuttavia, nella pagina successiva si ricarica non capisco. I 2 siti Web andranno di nuovo bene per il resto della giornata, ma poi la mattina successiva ricevo di nuovo lo stesso errore.

Gli errori vengono visualizzati in modo coerente dopo aver modificato il file web.config, che presumo sta forzando una ricompilazione?

Per favore aiuto. Non sono sicuro di quale sia il problema. Sembra che sia correlato alle impostazioni di sicurezza in IIS. Tutte e 3 le app Web sono configurate e distribuite in modo molto simile, tranne per il fatto che la prima app Web che non fornisce l'errore si trova su un server completamente diverso.

risposta

20

Così si scopre che il motivo per il SecurityException di cui sopra è di 3 volte

  • mio ISP ha ASP.net configurato per l'esecuzione in fiducia medio modalità sul suo server più recenti, e fiducia piena Modalità sui suoi server precedenti. Le mie Applicazioni Web sono divisi tra questi 2 server, che è il motivo per cui io sono sempre un comportamento differente tra le applicazioni anche se sono configurati esattamente lo stesso

  • Sto usando log4net per registrazione degli errori, e nel mio Global.asax di file, ho il seguente:

    protected void Application_Start() 
    { 
        RegisterRoutes(RouteTable.Routes); 
        log4net.Config.XmlConfigurator.Configure(); 
        log.Debug("Logging Initialized."); 
    } 
    

    Questa linea - log4net.Config.XmlConfigurator.Configure(); è ciò che sta gettando l'eccezione di cui sopra. Accade solo una volta all'avvio dell'applicazione o riavviato se viene modificato web.config. Ecco perché non sono riuscito a capire da dove provenisse il problema.

  • ho dovuto aggiungere un requirePermission = "false" al configSection log4net nel web.config:

    <section name="log4net" requirePermission="false" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    

Ora, se stavo sviluppando in modalità di attendibilità media, ho avrebbe sollevato questi problemi Puoi forzare l'esecuzione della tua app in modalità di fiducia media aggiungendo quanto segue al mio sito web.config:

<system.web> 
    <trust level="Medium"/> 
    </system.web> 

Forzando la mia applicazione per l'esecuzione in modalità di attendibilità media, ho preso l'eccezione di origine in dev esattamente dove ha avuto origine, e capito cosa non andava da lì ..

+3

eccellente suggerimento per impostazione del livello di attendibilità su Media, consentendo in tal modo il debug sulla macchina locale. Grazie! – Adventure