无法在安全透明方法安全级别问题中执行 CAS 断言

Posted

技术标签:

【中文标题】无法在安全透明方法安全级别问题中执行 CAS 断言【英文标题】:Cannot perform CAS Asserts in Security Transparent methods security level issue 【发布时间】:2013-06-10 07:32:00 【问题描述】:

我在主机上遇到了这个错误。

  System.InvalidOperationException: Cannot perform CAS Asserts in Security Transparent methods
   at System.Security.CodeAccessSecurityEngine.CheckNReturnSO(PermissionToken permToken, CodeAccessPermission demand, StackCrawlMark& stackMark, Int32 create)
   at System.Security.SecurityRuntime.Assert(PermissionSet permSet, StackCrawlMark& stackMark)
   at System.Security.PermissionSet.Assert()
   at mysql.Data.MySqlClient.MySqlParameter.SetTypeFromValue()
   at MySql.Data.MySqlClient.MySqlParameter.set_Value(Object value)
   at MySql.Data.MySqlClient.MySqlParameter..ctor(String parameterName, Object value)

但是在 localhost 项目中成功运行。我正在使用 asp.net 4.0 和 mysql。在某些资源中说我必须更改信任级别但我无法更改。因为我的托管公司不允许为此更改 web 配置文件主题。如何在不更改 Web 配置的情况下更改信任级别。如何解决此问题? 提前致谢

【问题讨论】:

【参考方案1】:

我猜您使用的是共享主机,因此如果他们不授予您执行此操作的权限,您将无法更改信任级别。

您使用的是什么版本的 MySQL 连接器? 您是否尝试将它们复制到项目的 \bin 文件夹中? (右键单击 MySQL.* 引用,然后设置为“Copy Local = true”)

您是否可以尝试从 localhost 连接到您的数据库服务器以确保您的连接字符串参数正常?

【讨论】:

直到上周我都在使用最新版本的 mysql 连接器。但一周前托管发生了一些变化,mysite 已关闭。之后我尝试使用 mysql 连接器 6.2.5,我的站点成功在主机上运行.现在我的网站使用 mysql 连接器 6.2.5。所以我使用的是旧版本的 mysql 连接器。这种情况是否会使我的网站容易受到任何攻击? 不,没有!主机提供商确实在服务器上设置了较少的权限,以避免一个客户应用程序从另一个客户应用程序/私人空间获取信息。较新版本的 MySql 连接器需要更多权限……它是如何构建的……无法改变这一点。更改为可以为您提供更多访问权限的新主机。更多权限并不意味着安全性降低,除非他们没有在服务器上的用户/应用程序之间正确配置权限。 我在使用连接器 6.5 及更高版本时遇到了这个问题。我根据@dgn 的建议恢复到 6.2.5,它也对我有用。

以上是关于无法在安全透明方法安全级别问题中执行 CAS 断言的主要内容,如果未能解决你的问题,请参考以下文章

internet安全级别无法自定义

IE浏览器安全级别不能更改怎么解决

高并发多线程安全之原子性问题CAS机制及问题解决方案

无法打开匿名级安全令牌解决方法

无法打开匿名级安全令牌解决方法

SOAPUI用测试步骤进行断言