2013-05-17 57 views
0

創建自定義Sharepoint Web服務時嘗試序列化傳輸類時收到錯誤。使用XmlSerializer時出現Inner SecurityException

我的可序列化類沒有錯誤。它們以我以前使用過的方式構建,並且可以在本地測試環境中成功序列化,只有在部署Sharepoint Web服務時纔會出現此問題。

System.InvalidOperationException was caught 
    Message=There was an error generating the XML document. 
    Source=System.Xml 
    StackTrace: 
     at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) 
     at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces) 
     at SPServiceExtensions.DTOSerializerHelper.SerializeDTO(SharepointDTO dto) 
    InnerException: System.Security.SecurityException 
     Message=Request failed. 
     Source=xo46jp-i 
     StackTrace: 
      at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterSharepointDTO.Write4_SharepointDTO(String n, String ns, SharepointDTO o, Boolean isNullable, Boolean needType) 
      at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterSharepointDTO.Write5_SharepointDTO(Object o) 
     InnerException: 

內部SecurityException不熟悉。什麼導致這個異常?

回答

0

ASP.NET爲其安全策略使用different trust levels。這是因爲應用程序無法訪問來自其他不相關應用程序的數據。

Microsoft Sharepoint擁有自己的two additional code access levels,默認情況下運行在WSS_Minimal。

隨着web服務的SharePoint服務器上的本地應用程序運行它需要完全信任

但是微軟不鼓勵威利願意不願意將充分信賴。我認爲它可能允許其他應用程序調用可能被惡意使用的代碼來利用系統。

因此,防止SecurityException的更好方法是修改項目AssemblyInfo.cs並將此屬性[assembly:AllowPartiallyTrustedCallers]添加到它。

Microsoft's article on Code Access Security

相關問題