【问题标题】:MVC3 + EF4 + MySQL System.Security.SecurityException: Request failedMVC3 + EF4 + MySQL System.Security.SecurityException:请求失败
【发布时间】:2012-01-26 19:25:36
【问题描述】:

我正在开发一个使用 Entity Framework 4.1 和 MySQL 的 ASP.NET MVC3 Web 应用程序。

本地一切正常,但是当我将解决方案部署到网络主机时,它给了我以下错误消息:

System.Security.SecurityException:请求失败。在 System.Security.CodeAccessSecurityEngine.ThrowSecurityException(RuntimeAssembly asm, PermissionSet 被授予, PermissionSet 被拒绝, RuntimeMethodHandleInternal rmh、SecurityAction 动作、对象需求、 IPermission permThatFailed) 在 System.Security.CodeAccessSecurityEngine.ThrowSecurityException(对象 assemblyOrString,PermissionSet 授予,PermissionSet 拒绝, RuntimeMethodHandleInternal rmh、SecurityAction 动作、对象需求、 IPermission permThatFailed) 在 System.Security.CodeAccessSecurityEngine.CheckSetHelper(权限集 授予,PermissionSet 被拒绝,PermissionSet 要求, RuntimeMethodHandleInternal rmh,对象组装或字符串, SecurityAction 操作,布尔 throwException)在 System.Security.PermissionSetTriple.CheckSetDemand(PermissionSet 需求集、权限集和更改的需求集, RuntimeMethodHandleInternal rmh) 在 System.Security.PermissionListSet.CheckSetDemand(PermissionSet pset, RuntimeMethodHandleInternal rmh) 在 System.Security.PermissionListSet.DemandFlagsOrGrantSet(Int32 标志, PermissionSet grantSet) 在 System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32 权限,PermissionSet targetGrant,CompressedStack 安全上下文)在 System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32 permission, PermissionSet targetGrant) 失败的操作是: 需求第一个失败的权限类型是: System.Security.PermissionSet

我的网络配置:

<connectionStrings>
    <add name="MySqlMembershipConnection" connectionString="Data Source=localhost;userid=userName;password=passw0rd;database=tv;" providerName="MySql.Data.MySqlClient,Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
    <add name="TvEntities" connectionString="metadata=res://*/Entities.Model.csdl|res://*/Entities.Model.ssdl|res://*/Entities.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=127.0.0.1;port=3351;User Id=userName;password=passw0rd;Persist Security Info=True;database=tv&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

<system.data>
    <DbProviderFactories>
        <clear />
        <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL"
        type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>

信任级别为中。

有什么想法吗?

【问题讨论】:

  • 你记得改变你的 web.config 让它不指向本地主机吗?如果我每次忘记的时候都有一便士,我大概有 4 便士。

标签: mysql asp.net-mvc entity-framework


【解决方案1】:

尝试使用更新版本的连接器。它是reported as a bug,应该在 6.3.7 和 6.4.1 中修复。

【讨论】:

    【解决方案2】:

    您可以随时切换到另一个完全信任的托管服务提供商吗?

    【讨论】:

      【解决方案3】:

      添加对 System.Web.Providers 的引用。如果程序集在本地不可用,请使用 NuGet 包管理器安装它,如下所示:

      PM> Install-Package System.Web.Providers
      

      还要在 web.config 文件中验证以下条目是否已添加到配置文件部分

      <roleManager defaultProvider="DefaultRoleProvider">
          <providers>
              <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider,            
                         System.Web.Providers, Version=1.0.0.0, Culture=neutral,  
                         PublicKeyToken=31bf3856ad364e35"   
                         connectionStringName="DefaultConnection" applicationName="/" />
          </providers>
      </roleManager>
      

      然后你可以重建应用程序并执行它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-01
        • 2010-12-30
        • 1970-01-01
        • 2017-04-02
        相关资源
        最近更新 更多