首先,我想说的是,我已经尝试了几个小时来解决这个问题,方法是从有相同问题的人那里尝试了一堆不同的方法,但无济于事。在这一点上我很无知。
我正在使用我在 ASP.NET 4.5 应用程序中引用的 MySql.Data 和 MySql.Data.Entity dll(版本 6.7.4)。
我已经设法(本地)连接到我的数据库并毫无问题地查询它。
SqlConnection = new MySqlConnection("server=localhost;User Id=;Password=;database=;");
问题出在中等信任的共享环境中。我收到以下错误(尝试连接到数据库时):
说明:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。异常详细信息:System.Security.SecurityException:请求“System.Security.Permissions.SecurityPermission,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。
我还尝试添加“Integrated Security=True;includesecurityasserts=true;autoenlist=false;” 到连接字符串,但没有帮助。
我也尝试在我的 web.config 中添加它:
<mscorlib>
<security>
<policy>
<PolicyLevel version="1">
<SecurityClasses>
<SecurityClass Name="MySqlClientPermission" Description="MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</SecurityClasses>
<NamedPermissionSets>
<PermissionSet class="NamedPermissionSet" version="1" Name="ASP.Net">
<IPermission class="MySqlClientPermission" version="1" Unrestricted="true">
</IPermission>
</PermissionSet>
</NamedPermissionSets>
</PolicyLevel>
</policy>
</security>
但这也不起作用。
然后,我尝试通过遵循一些文章来添加一堆 PermissionSets、IPermissions 以及 web.config 中没有的内容,但这似乎对我不起作用。
请注意:
- 在 web.config 中设置 trust level="Full" 不是一个选项。
- 我用来连接数据库的连接字符串不在我的 web.config 中,我想保持这种状态。
- 使用 MySql 以外的任何东西都不是一种选择。
任何和所有的帮助表示赞赏!谢谢!
编辑
我改变了通过 ODBC 连接与数据库通信的方式。使用完全信任可以正常工作,但是一旦我更改为中等信任,我就会得到与 MySql 连接器基本相同的错误。
请求“System.Data.Odbc.OdbcPermission, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限失败。
任何人都可以请我指出正确的方向,例如有关您如何使其工作的完整示例,因为我似乎无法使用中等信任来完成这项工作......
谢谢!