PermissionSet – 请求失败错误

我几乎没有使用ChannelSink,ServerSink和ClientSink进行通信的项目。

我已将项目从.NET 2.0升级到.NET 4.0。 升级之前一切正常。

现在,当我尝试进行通信时, – 对于特定的消息 – 我的OnReceiveMessage未被调用并抛出以下exception:

System.Security.SecurityException:请求失败

服务器堆栈跟踪:在System.Array.InternalCreate(Void * elementType,Int32 rank,Int32 * pLengths,Int32 *

pLowerBounds)System.Array.CreateInstance(类型为elementType,Int32 Length),位于System.Runtime.Serialization.Formatters.Soap.ObjectReader.ParseObject(ParseRecord pr)的System.Runtime.Serialization.Formatters.Soap.ObjectReader.ParseArray(ParseRecord pr)中。处于System.Runtime.Serialization.Forxs.Serial.Sunap.Serialization.Forxs.Soap.SoapParser.ParseXML()的System.Runtime.Serialization.Formatters.Soap.ObjectReader.Parse(ParseRecord pr)System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren()处于System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXML() System.Runtime.Serialization.Formatters.Soap.ObjectReader.Run()System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler,ISerParser)

serParser)System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream,

System.Runtime.Remoting.Channels.CoreChannel.DeserializeSoapRequestMessage(流中的HeaderHandler处理程序)

system.Runtime.Remoting.Chanels.SoapServerFormatterSink.ProcessMessage中的inputStream,Header [] h,Boolean bStrictBinding)

(IServerChannelSinkStack sinkStack,IMessage requestMsg,ITransportHeaders requestHeaders,Stream

requestStream,IMessage&responseMsg,ITransportHeaders&responseHeaders,Stream&responseStream)

在[0]处重新抛出exception:在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage)

RetMSg)在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)。 。 (我的一些文件)。 失败的操作是:Demand失败的第一个权限的类型是:System.Security.PermissionSet需求是:

唯一允许的权限是:

导致该失败的方法是:System.Runtime.Remoting.Channels.ServerProcessing ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack,System.Runtime.Remoting.Messaging.IMessage,System.Runtime.Remoting.Channels.ITransportHeaders,System .IO.Stream,System.Runtime.Remoting.Messaging.IMessage ByRef,System.Runtime.Remoting.Channels.ITransportHeaders ByRef,System.IO.Stream ByRef)

问题是,如果我创建一个虚拟方法并将其添加到sinkstack – 它会调用它。 即使我使用相同的代理拒绝该消息。

其他的事情是,其他消息工作正常。 只有一种类型的消息不能用于创建的所有类型。

我没有在我的应用程序中请求PermissionSet,任何帮助?

Pah – 应该猜测在堆栈交换发布后5分钟我会找到它。 我只需要替换:

 

通过

  

typeFilterLevel的MSDN文档解释了发生了什么,虽然我不完全确定为什么数组不被视为“基本”类型