2016-10-30 3 views
1

Ich habe eine ASP.NET MVC 5-Anwendung, die auf dem Entwicklungscomputer funktioniert. Ich veröffentlichte es und übertragen Sie die Dateien online, und es erzeugt den folgenden Fehler:Hosting ASP.NET MVC-Anwendung: Sicherheitsausnahme

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 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 failed.] 
    System.Security.CodeAccessSecurityEngine.ThrowSecurityException(RuntimeAssembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandleInternal rmh, SecurityAction action, Object demand, IPermission permThatFailed) +165 
    System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Object assemblyOrString, PermissionSet granted, PermissionSet refused, RuntimeMethodHandleInternal rmh, SecurityAction action, Object demand, IPermission permThatFailed) +100 
    System.Security.CodeAccessSecurityEngine.CheckSetHelper(PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandleInternal rmh, Object assemblyOrString, SecurityAction action, Boolean throwException) +272 
    System.Security.CodeAccessSecurityEngine.CheckSetHelper(CompressedStack cs, PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandleInternal rmh, RuntimeAssembly asm, SecurityAction action) +55 
    System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0 
    System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) +70 
    System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) +39 
    System.Type.GetType(String typeName) +50 
    System.CodeDom.Compiler.CompilerInfo.get_IsCodeDomProviderTypeValid() +10 
    System.Web.Compilation.CompilationUtil.GetRecompilationHash(CompilationSection ps) +2090 
    System.Web.Configuration.CompilationSection.get_RecompilationHash() +107 
    System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDateInternal(Int64 cachedHash) +465 
    System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDate(Int64 cachedHash) +51 
    System.Web.Compilation.BuildManager.ExecutePreAppStart() +132 
    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +521 

Mein Hosting bietet mir mit einer ASP.NET-Einstellungen Panel.

Meine Einstellungen sind wie folgt:

Framework version: 4.0.30319.17929 
Default webpage language: C# 
CAS trust level: FULL 

jemand mir, was ist das Problem führen kann. Ist es die App oder das Hosting?

+1

Es eigentlich eine Kombination aus beidem sein könnte. Wenn Sie "publizieren" sagen, veröffentlichen Sie in Azure oder einer anderen Lösung? Hast du Zugriff auf den App-Pool, unter dem die App konfiguriert ist? Überprüfen Sie die Identität des Prozesses, der diesen bestimmten App-Pool ausführt. – Nikhil

+0

Es ist ein Drittanbieter-Hosting. Nicht azurblau. Ich habe keinen Zugriff auf App-Pool-Konfiguration – progrAmmar

Antwort

1

Die meisten Hosting-Provider bieten FULL Trust Hosting jetzt. MVC akzeptiert kein Teilvertrauen.

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

Wenn dies nicht funktioniert Wenn Sie keinen Zugriff auf den Server haben, sollten Sie sich an Ihren Hosting-Anbieter wenden.

Was wir tun, ist das folgende in unserem Entwickler laufen.

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

die Vertrauensstufe ändern macht die Staging-Umgebung mit dem gleichen Fehler auf dem gemeinsamen genutzten Host angezeigt fehlschlagen, so dass Sie Ihren Code mit dem Gastgeber erfüllen korrigieren. Wenn Sie eine Hosting-Umgebung mit mittlerer Vertrauenswürdigkeit bereitstellen, empfiehlt es sich, die Vertrauensstufe auf "Mittel" zu setzen, um Zeit und Energie zu sparen.

Hier ist ein link

+0

Ist dieses Vertrauensgrad anders als eine CAS-Vertrauensstufe? Weil ich Zugang zu dieser Konfiguration habe und ich habe es auf volle gesetzt. – progrAmmar

+0

Ah ok ich sehe was los ist. CAS-Richtlinien (Code Access Security) kommen hauptsächlich von älteren Systemen, No wird wirklich nicht mehr verwendet. Hier ist ein Link, um Ihnen dabei zu helfen. https://msdn.microsoft.com/en-us/library/dd984947.aspx –