2011-12-23 64 views
1

我正在开发一个ASP.NET MVC3 Web应用程序,它使用Entity Framework 4.1和MySQL。MVC3 + EF4 + MySQL System.Security.SecurityException:请求失败

当地一切运作良好,但是当我解决方案部署到虚拟主机,它给了我下面的错误信息:

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中拒绝了,PermissionSet中的要求, RuntimeMethodHandleInternal RMH,对象assemblyOrS特林,在 System.Security.PermissionSetTriple.CheckSetDemand(PermissionSet中 demandSet,PermissionSet中& alteredDemandset, RuntimeMethodHandleInternal RMH)在 System.Security.PermissionListSet.CheckSetDemand SecurityAction动作,布尔throwException)(PermissionSet中的pset, RuntimeMethodHandleInternal RMH)在 System.Security.PermissionListSet.DemandFlagsOrGrantSet(的Int32标志, 的PermissionSet grantSet)在 System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(的Int32 许可,PermissionSet中targetGrant,CompressedStack SecurityContext的)在 System.Security.CodeAccessSecu rityEngine.ReflectionTargetDemandHelper(的Int32 许可,PermissionSet中targetGrant)失败了行动: 需求发生故障的类型的第一个权限是: System.Security.PermissionSet

我的web.config:

<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> 

Trustlevel在Medium上。

任何想法?

+0

你已经记得改变你的web.config所以它不指向本地主机?如果每次我忘记我都有一分钱,我会有大约4便士。 – 2011-12-23 13:18:44

回答

2

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

2

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

+0

不幸的是,我仍然有与MySQL 6.4.4相同的错误。 – Colin 2011-12-27 10:01:34

0

添加对System.Web.Providers的引用。

PM> Install-Package System.Web.Providers 

在下面的条目已被添加到配置文件部分

<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> 

然后在web.config文件还确认:如果组件不可用的NuGet包管理器,如下所示本地安装您可以重建应用程序并执行它。