16

我使用默认 MVC 模板创建了一个全新的 Visual Studio 2013 ASp.net MVC 应用程序。但是,我收到一条错误消息“System.Security.Permissions.ReflectionPermission 类型的权限请求失败。

是否可以关闭此反射权限以使该站点仍然有效?

这是我的 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>

异常详细信息:System.Security.SecurityException:请求“System.Security.Permissions.ReflectionPermission,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。

[SecurityException: 请求类型>'System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 的权限失败。] System.Delegate.DelegateConstruct(Object target, IntPtr slot) +0 Owin.Loader.DefaultLoader..ctor(Func 3 next, Func2 激活器,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, HttpContext context, MethodInfo[] handlers) +418 System.Web.HttpApplication.InitSpecial (HttpApplicationState 状态,MethodInfo[] 处理程序,IntPtr appContext,HttpContext 上下文)+172 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext 上下文)+336 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+296

我试图添加

<trust level="Full" />

到我的 Web.Config system.Web 部分,但是因为我得到了一个

此配置部分不能在此路径中使用。当站点管理员使用继承的配置文件锁定对此部分的访问权限时,就会发生这种情况。

它是 1and1.com 的共享主机,他们不会完全信任我。

4

5 回答 5

41

http://www.codeproject.com/Questions/586223/SecurityplusExceptionpluscomingplusinplusaplusrunn

解决方案 4 System.Security.SecurityException:请求“System.Net.SocketPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限失败

以下错误的解决方案

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

适用于我的 en godady 托管

于 2014-10-16T15:59:09.313 回答
11

我直接询问了 asp.net 团队,这是他们的回复

去年,我们正式宣布部分信任不再是用于应用程序隔离的信任边界 ( http://support.microsoft.com/kb/2698981 ),因此我们对共享托管服务提供商的建议是不再使用它. 展望未来,我们将不再支持我们为此开发的新框架功能的部分信任。

我知道很多人使用共享主机,由于主机提供商永远不会完全信任他们的共享主机产品,我猜微软做出了这个决定,以便他们可以在 Azure 上获得更多客户。

让我们在共享主机上出售客户的小型开发人员陷入困境。要么去更昂贵的托管或跳到天蓝色。

于 2013-11-15T18:50:08.043 回答
3

如果您有以下情况:

1) 由于强制性安全要求,必须使用中等或更低的信任级别。

2) 使用 ASP.Net 4.5

3) 不需要使用 Owin 来允许外部身份验证提供程序,如 Google 或 Facebook。

4)应用程序错误信息显示Owin参与了阻止您的应用程序在Medium Trust下启动。

您可以将以下行添加到您的 web.config AppSettings 部分以禁用 Owin,您应该能够让您的程序以中等信任级别运行:

<add key="owin:AutomaticAppStartup" value="false" />
于 2016-06-22T11:01:05.707 回答
2

Microsoft.Owin.Host.SystemWeb 包不支持部分信任。这是帮助在 IIS 集成管道上运行 OWIN 中间件的软件包。此程序集进行反射以检测和加载 OWIN Startup 类。您可以通过添加一个 appSetting 来关闭它,但不幸的是 OWIN 中间件将无法工作,因为启动检测被禁用。简短的回答 - 不可能在部分信任的情况下运行。

于 2013-10-22T01:48:38.427 回答
0

在 GoDaddy Plesk 上使用 7.2.x 时,我遇到了安全问题。

我的解决方案是将 customErrors 下面的信任级别手动添加到我的 web.config 中(如果您使用 godaddy 仪表板添加它,它将特定于 umbraco 目录而不是站点的上根目录)。

于 2016-03-15T06:35:57.640 回答