我正在开发一个使用Bloomberg API并通过其门户网站使用的应用程序。这是一个.NET4.0应用程序。它未通过安全验证,抛出了这样的异常:
System.Windows.Markup.XamlParseException occurred
Message='Set connectionId threw an exception.' Line number '6' and line position '14'.
Source=PresentationFramework
LineNumber=6
LinePosition=14
StackTrace:
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at Application2.MainView.InitializeComponent()
at Application2.MainView..ctor()
InnerException: System.IO.FileLoadException
Message=Could not load file or assembly 'MyCustomDll, Version=1.5.4700.39806, Culture=neutral, PublicKeyToken=b55dd9efe817e823' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)
Source=Application2
FileName=MyCustomDll, Version=1.5.4700.39806, Culture=neutral, PublicKeyToken=b55dd9efe817e823
StackTrace:
at Application2.MainView.System.Windows.Markup.IComponentConnector.Connect(Int32 connectionId, Object target)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetConnectionId(Object root, Int32 connectionId, Object instance)
InnerException: System.Security.Policy.PolicyException
Message=Required permissions cannot be acquired.
Source=mscorlib
StackTrace:
at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission)
at System.Security.SecurityManager.ResolveCasPolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission)
在Bloomberg文件中,非常符合安全标准的指导原则,并说:
应用门户应用的允许CAS权限:
1. IsolatedStorageFilePermission,Allowed =“AssemblyIsolationByUser”UserQuota =“2048000”
2. SecurityPermission,Flags =“Execution,ControlThread,SerializationFormatter”
3. UIPermission,Unrestricted =“true”
4. MediaPermission,Audio =“NoAudio”Video =“NoVideo”Image =“SafeImage”
5. PrintingPermission,Level =“DefaultPrinting”
失败的DLL(我们有源代码)已在“MyCustomDll.dll”的例外中重命名。这个Dll不使用不安全的代码或平台调用,只使用.NET4.0和WPF。
我想知道有没有办法通过检查.NET程序集的安全权限来测试为什么失败?