.net MethodAccessException

.net MethodAccessException,.net,installation,code-access-security,code-security,.net,Installation,Code Access Security,Code Security,我有一个非托管assebmly(加密功能),VB.NET(2.0)安装程序类在应用程序安装期间用于应用程序服务器上的一些安装诊断。问题是,每当调用一个方法时,它都会抛出MethodAccessException异常。 当我在应用程序本身(Windows 2.0)中调用该方法时,比如说其他应用程序程序集的任何形式,都会接受完全受信任的调用。但是,当安装程序类(自定义操作)执行调用时,非托管程序集不允许该调用,并引发异常。 我对caspol工具做了一些研究,但仍然不能掌握足够的代码安全性来解决这个问

我有一个非托管assebmly(加密功能),VB.NET(2.0)安装程序类在应用程序安装期间用于应用程序服务器上的一些安装诊断。问题是,每当调用一个方法时,它都会抛出MethodAccessException异常。 当我在应用程序本身(Windows 2.0)中调用该方法时,比如说其他应用程序程序集的任何形式,都会接受完全受信任的调用。但是,当安装程序类(自定义操作)执行调用时,非托管程序集不允许该调用,并引发异常。 我对caspol工具做了一些研究,但仍然不能掌握足够的代码安全性来解决这个问题
谢谢。

以下是我在MSDN论坛上得到的答案:

此异常[MethodAccessException]在以下情况下引发:

* A private, protected, or internal method that would not be accessible from normal compiled code is accessed from partially trusted code by using reflection.
* The access level of a method in a class library has changed, and one or more assemblies that reference the library have not been recompiled.
您可以在以下页面中查看信息:

我认为你的问题应该是第二种情况

我通过思考解决了这个问题。谢谢,下面是原始答案的链接


快乐编码。

调用方(安装程序)是否完全信任?(Windows 2.0)是什么意思?您的意思可能是(.NET 2.0)吗?这不是CAS例外。您的问题完全不清楚非托管代码如何抛出托管异常。1。是的,Jim,它是.NET2.0。如何使安装程序包完全可信?在VS 2008.2.Hans中似乎没有任何信任设置,我的意思是抛出一个exeption的程序集是.NET,但是没有访问代码的权限。它在Windows应用程序中引用,我在installet包的自定义操作中引用它。安装程序类也在该Windows应用程序中。程序集执行了一些加密,我怀疑因为这是一个安全敏感的操作,所以代码中实现了一些代码安全性。有一个类似的问题。使用Silverlight的反射代码版本进行处理。在将类库中的类的可访问性更改为public并从控制台应用程序调用其方法之一后,我今天遇到了相同的问题,即使我在Visual Studio中清理/重建了解决方案。原因是“微不足道的”(当然,在我找到它之后):程序集是GAC ed的,Visual Studio(在调试时)和未调试的应用程序加载了GAC es版本,其中包含类的非公共版本。因此,如果您有相同的Symptoms,请检查GAC中的程序集,如果找到以前的版本,请重新部署新版本。