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

4
我在主机上遇到了这个错误。
  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)

在本地主机上,该项目可以成功运行。我使用的是asp.net 4.0和mysql。一些资源表明我需要更改信任级别,但我无法更改,因为我的托管公司不允许更改web config文件。我该如何在不更改web config的情况下更改信任级别?我该如何解决这个问题?
谢谢!
1个回答

0

我猜你正在使用共享主机,如果他们不给你权限,那么你就无法更改信任级别。

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

你能否尝试从本地主机连接到数据库服务器,以确保你的连接字符串参数正确吗?


2
我一直使用最新版本的mysql连接器,直到上周。但是一周前,主机更改了某些内容,导致我的网站崩溃。之后,我尝试使用mysql连接器6.2.5,在主机上成功运行了我的网站。现在我的网站正在使用mysql连接器6.2.5工作。所以我正在使用旧版本的mysql连接器。这种情况会使我的网站容易受到攻击吗? - dgn
不,它并不会!主机提供商在服务器上设置较少的权限,以避免一个客户应用程序从另一个客户应用程序/私有空间中获取信息。新版本的 MySql 连接器需要更多的特权...这就是它的构建方式...无法改变。换到一个可以给你更多访问权限的新主机。更多的权限并不意味着不安全,除非他们没有正确地在服务器上配置权限跨用户/应用程序。 - rodrigogq
我在使用6.5及以上版本的连接器时遇到了问题。在@dgn的建议下,我回退到了6.2.5版本,这对我也起作用了。 - Leopold Stotch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接