我必须从网络共享加载程序集,但我得到一个例外:
17.08.2011 9:50:50: Exception: TargetInvocationException - "Exception has been thrown by the target of an invocation."
System.Object _InvokeMethodFast(System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeTypeHandle)
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at MachineInterface.Common.DLLLoader.ExecuteChipConverter(String dllPath, Hashtable cardData, String customerCode) in ..\Common\DLLLoader.cs:line 54
17.08.2011 9:50:50: Exception: SecurityException - "Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed."
Void Check(System.Object, System.Threading.StackCrawlMark ByRef, Boolean)
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
at System.Security.CodeAccessPermission.Demand()
at System.Reflection.Assembly.get_Location()
at CombosHelper.CombosDataFile.GetTemplateByAlias(String Alias)
at TSPHelper.ChipDataConverter.ConversionProvider.DChipToChipXpressStartMessage(String DChipHexString, String customerCode, String CustomerCardTypeCode, String ArticleCode)
at ToChipXpressStartMessage(Hashtable cardData, String customerCode)
任何人都有类似的问题,可以帮我解决这个问题吗? 奇怪的是,相同的应用程序可以在其他计算机上运行,并从网络共享加载程序集就好了。
答案 0 :(得分:3)
当程序集从网络共享加载时,它将在Intranet应用程序的上下文中运行。
默认情况下,Intranet应用程序没有文件IO permiessions。
您有多种选择,从授予IO权限到所有Intranet服务(错误),或者仅使用所需的最低权限信任您要加载的特定程序集/文件夹。
有关可用工具的详细概述,请访问MSDN http://msdn.microsoft.com/en-us/library/zdc263t0(v=vs.80).aspx
您应用策略的范围可以是计算机或企业级别,企业级别适用于整个域,这听起来最适合您的应用程序。
如果此错误仅发生在少数PC上,那么它们的组策略,不同的计算机策略或访问程序集的用户的权限可能会有所不同。