web-dev-qa-db-fra.com

Comment désactiver l'utilisation de System.Security.Permissions.ReflectionPermission dans le nouveau modèle Asp.net VS2013 afin qu'il fonctionne sur l'hébergement partagé

J'ai créé une toute nouvelle application Visual Studio 2013 ASp.net MVC à partir du modèle MVC par défaut. Cependant, je reçois un message d'erreur. La demande d'autorisation du type 'System.Security.Permissions.ReflectionPermission a échoué.

Est-il possible de désactiver cette autorisation de réflexion afin que le site fonctionne toujours?

voici mon web.config

<?xml version="1.0" encoding="utf-8"?>
    <!--
    For more information on how to configure your ASP.NET application, please visit
    http://go.Microsoft.com/fwlink/?LinkId=301880
    -->
    <configuration>
    <configSections>

      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      <!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 -->
    </configSections>
    <connectionStrings>
      <add name="MyDb" connectionString="Data Source=x.x.com;Initial Catalog=x;User Id=x;Password=x;" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <appSettings>
      <add key="webpages:Version" value="3.0.0.0" />
      <add key="webpages:Enabled" value="false" />
      <add key="ClientValidationEnabled" value="true" />
      <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    <system.web>
    <trust level="Full" />
      <customErrors mode="Off"/>
      <authentication mode="None" />
      <compilation targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
    </system.web>
    <system.webServer>
      <modules>
        <remove name="FormsAuthenticationModule" />
      </modules>
    </system.webServer>
    <runtime>
      <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    <entityFramework>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
          <parameter value="v11.0" />
        </parameters>
      </defaultConnectionFactory>
      <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      </providers>
    </entityFramework>
    </configuration>

Détails des exceptions: System.Security.SecurityException: Une demande d'autorisation de type 'System.Security.Permissions.ReflectionPermission, mscorlib, version = 4.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' a échoué.

[SecurityException: demande de l'autorisation de type> 'System.Security.Permissions.ReflectionPermission, mscorlib, version = 4.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' a échoué.] System.Delegate.DelegateConstruct (Object cible, emplacement IntPtr) +0 Owin.Loader.DefaultLoader..ctor (Func3 next, Func2 activateur, IEnumerable1 referencedAssemblies) +69 Microsoft.Owin.Host.SystemWeb.OwinBuilder.GetAppStartup() +65 Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint() +28 System.Threading.LazyInitializer.EnsureInitializedCore(T& target, Boolean& initialized, Object& syncLock, Func1 valueFactory) +115 Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init (HttpApplication context) + 106 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext, contexte HttpContext, gestionnaires MethodInfo []) +418 gestionnaires , System.Web.HttpApplication.InitSpecial (HttpApplicationState state, MethodInfo). , Contexte HttpContext) +172 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, Contexte HttpContext) +336 System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext)

J'ai essayé d'ajouter 

<trust level="Full" />

à ma section Web.Config system.Web mais cela ne fonctionnait pas car j’ai eu 

Cette section de configuration ne peut pas être utilisée sur ce chemin. Cela se produit lorsque l'administrateur du site a verrouillé l'accès à cette section à l'aide d'un fichier de configuration hérité.

c'est un hébergement partagé chez 1and1.com et ils ne me donneront pas une confiance totale.

12
greay

J'ai demandé à l'équipe asp.net directement et c'était leur réponse

Nous avons officiellement annoncé que la confiance partielle n'était plus une limite de confiance aux fins de l'isolation d'applications l'année dernière ( http://support.Microsoft.com/kb/2698981 ) et, en tant que telle, notre recommandation aux fournisseurs d'hébergement partagé est de: ne l'utilisez plus. À l'avenir, nous ne soutiendrons pas la confiance partielle pour les nouvelles fonctionnalités de framework que nous développons pour cette raison.

Je connais de nombreuses personnes utilisant l'hébergement partagé et, étant donné que les fournisseurs d'hôtes ne donneront jamais une confiance totale à leurs produits d'hébergement partagé, je suppose que Microsoft a pris cette décision afin de pouvoir obtenir davantage de clients sur Azure. 

Nous met les petits développeurs qui ont des clients vendus sur l'hébergement mutualisé dans une situation délicate. Accédez à un hébergement plus coûteux ou passez à Azure.

11
greay

http://www.codeproject.com/Questions/586223/SecurityplusExceptionpluscomingcomingin plusaplusaplusrunn

Solution 4 System.Security.SecurityException: Demande d'autorisation de type 'System.Net.SocketPermission, System, version = 4.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' a échoué.

solution suivante d'erreur ci-dessus

<system.web>
    <customErrors mode="Off"/>
    <trust level="Full" />
</system.web>

Fonctionne pour mon hébergement en godady

40
rafaellorey

La confiance partielle n'est pas prise en charge pour le package Microsoft.Owin.Host.SystemWeb. C’est le paquet qui aide à exécuter les middlewares OWIN sur IIS pipeline intégré . Cet assemblage effectue une réflexion pour détecter et charger la classe de démarrage OWIN. Vous pouvez désactiver cela en ajoutant un appSetting, mais malheureusement, les middlewares OWIN ne fonctionneront pas car la détection de démarrage est désactivée. Réponse courte - impossible de fonctionner en confiance partielle. 

2
Praburaj

Si vous avez les conditions suivantes:

1) Doit utiliser un niveau de confiance moyen ou inférieur en raison d'exigences de sécurité obligatoires.

2) Utilisation de ASP.Net 4.5

3) Il n'est pas nécessaire d'utiliser Owin pour autoriser des fournisseurs d'authentification externes, tels que Google ou Facebook.

4) Les informations d'erreur d'application indiquent que Owin intervient pour empêcher le démarrage de votre application sous Medium Trust.

Vous pouvez ajouter la ligne suivante à votre section web.config AppSettings pour désactiver Owin et vous devriez pouvoir exécuter votre programme à des niveaux de confiance Moyen:

<add key="owin:AutomaticAppStartup" value="false" />
2
WWC

Avec 7.2.x sur GoDaddy Plesk, j'avais des problèmes de sécurité.

La solution pour moi était d’ajouter manuellement le niveau de confiance situé sous le paramètre customErrors à mon fichier Web.config (si vous utilisez le tableau de bord GoDaddy pour l’ajouter, il le place dans un répertoire umbraco différent de la racine supérieure du site).

0
Rajiv R. Pandey