Ho sviluppato un'applicazione .net 3.0, che viene distribuita utilizzando clickonce.Perché la mia applicazione .net richiede pieno affidamento?
Mi piacerebbe passare dalla piena fiducia alla fiducia parziale per facilitare l'implementazione.
Ho provato la funzione "Calcolare i permessi" nella scheda "Protezione" del mio progetto in Visual Studio, e la risposta è abbastanza chiara:
---------------------------
Microsoft Visual Studio
---------------------------
This application requires full trust to run correctly.
Tuttavia, non sono stato in grado di capire perché è richiesta piena fiducia. Ho provato a cambiare le impostazioni di protezione di "fiducia parziale", ma l'applicazione solleva un SecurityException immediatamente al momento del lancio:
System.Security.SecurityException {"Request failed.", Action= "System.Security.Permissions.SecurityAction.LinkDemand"
at MyNameSpace.Program.Main(String[] args)
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
at System.Activator.CreateInstance(ActivationContext activationContext)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
Il mio software, probabilmente non ha bisogno di piena fiducia (I connettersi solo a un server web tramite https e accedere al filesystem solo su richiesta dell'utente, per scopi di importazione/esportazione)
Come posso capire perché la mia applicazione richiede pieno affidamento?
Cosa stai chiamando nel tuo metodo Main? Qualcosa che stai chiamando lì sta causando il problema. – leppie
Niente. questo è il costruttore predefinito .net Main per una Winform App, IE Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault (false); Application.Run (new MyForm()); e niente di più. Penso che il problema si verifica prima, vale a dire quando il clr carica il mio assembly – Brann