2014-02-19 60 views
1

我有很少的項目使用ChannelSink,ServerSink和ClientSink進行通信。PermissionSet - 請求失敗的錯誤

我已經將項目從.NET 2.0升級到.NET 4.0。升級之前一切正常。

現在,當我嘗試溝通, - 爲特定信息 - 我的OnReceiveMessage不叫和投擲以下異常:

System.Security.SecurityException:請求失敗

服務器堆棧追蹤: 在System.Array.InternalCreate(void *的元素類型,等級的Int32,的Int32 * pLengths,的Int32 *

pLowerBounds) 在System.Array.CreateInstance(類型元素類型,長度的Int32) 在System.Runtime.Serialization.Formatters.Soap.ObjectReader.ParseArray(ParseRecord PR) 在System.Runtime.Serialization.Formatters.Soap.ObjectReader.ParseObject(ParseRecord PR) 在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(流 serializationStream,

HeaderHandler處理程序) 在System.Runtime.Remoting.Channels.CoreChannel.DeserializeSoapRequestMessage(流

的inputStream,報頭[] h時,布爾bStrictBinding) 在System.Runtime.Remoting.Chanels.SoapServerFormatterSink.ProcessMessage

(IServerChannelSinkStack sinkStack,即時聊天requestMsg, ITransportHeaders requestHeaders,流

requestStream,即時聊天& responseMsg,ITransportHeaders & responseHeaders響應,流& responseStream)[0]時

異常重新拋出: 在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即時聊天reqMsg,即時聊天

retMSg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData & msgData,Int32 type) 。 。 (我的一些文件) 。失敗的行動是:需求類型的失敗是第一個允許的:System.Security.PermissionSet需求 是爲:

唯一允許的權限爲:

導致失敗是方法: 系統。Runtime.Remoting.Channels.ServerProcessing ProcessMessage的(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders,System.IO.Stream, 系統.Runtime.Remoting.Messaging.IMessage的ByRef, System.Runtime.Remoting.Channels.ITransportHeaders的ByRef, System.IO.Stream的ByRef)

的事情是,如果我創建一個虛擬的方法,並把它添加到沉淪 - 它稱之爲沉淪。即使我使用拒絕該消息的同一個代理。

其他的事情是,其他的消息工作得很好。從iv'e創建的所有類型中只有一種類型的消息不起作用。

我還沒有在我的應用程序請求PermissionSet,任何幫助?

+0

你有沒有得到這個地方?自從升級到.net 4.0以來,我遇到了同樣的問題,並且只在方法簽名涉及數組的地方。奇怪的是它在我的本地開發環境中被破壞,但是我們的測試服務器上的代碼完全相同。仍在調查這裏... – Andy

回答

0

Pah - 應該猜測,在發佈堆棧交換後5分鐘我會找到它。我只是不得不更換:

<formatter ref="soap" /> 

通過

<formatter ref="soap" typeFilterLevel="Full" /> 

爲typeFilterLevel MSDN文檔解釋了爲什麼一個數組不被認爲是「基本」型

發生了什麼事,雖然我不能完全肯定
相關問題