2011-11-07 1 views
1

프록시 생성을 위해 NHibernate 1.2, NH 3.1을 사용하고 있습니다.Unable to obtain public key for StrongNameKeyPair. 관리자 권한이없는 사용자로 응용 프로그램 (단순한 win-forms 응용 프로그램)을 실행하려고 시도하고 있습니다. Unable to obtain public key for StrongNameKeyPair. 이전에 (해당 단계를 수행하기 위해 수행 한 작업은 확실하지 않음) 예외는 Creating a proxy instance failed.권한이없는 사용자가 NHibernate를 쿼리 할 때 DB에 쿼리하지 못했습니다.

2010 년 블로그 게시물 중 일부는 캐슬의 동적 프록시가 중간 트러스트 시나리오에 문제가있을 수 있다고 제안하므로 sn -m n으로 내 행운을 시험해 보았습니다.

이 동작에 익숙한 사람이 있습니까?

감사합니다, JK

편집 :
이 예외를 생성하는 응용 프로그램 호출이 NHibernate에 세션을 통해 간단한 LINQ입니다 . 시행 착오를 조금 후에 내가 게스트 계정이 문제가 발견 -

mscorlib.dll!System.Reflection.StrongNameKeyPair.ComputePublicKey() + 0xca bytes  
mscorlib.dll!System.Reflection.StrongNameKeyPair.PublicKey.get() + 0x15 bytes 
mscorlib.dll!System.Reflection.Emit.AssemblyBuilder.AssemblyBuilder(System.AppDomain domain = {System.AppDomain}, System.Reflection.AssemblyName name = {System.Reflection.AssemblyName}, System.Reflection.Emit.AssemblyBuilderAccess access = Run, string dir = null, System.Security.Policy.Evidence evidence = null, System.Security.PermissionSet requiredPermissions = null, System.Security.PermissionSet optionalPermissions = null, System.Security.PermissionSet refusedPermissions = null, ref System.Threading.StackCrawlMark stackMark = LookForMyCaller, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> unsafeAssemblyAttributes = null, System.Security.SecurityContextSource securityContextSource = CurrentAssembly) + 0x4b8 bytes 
mscorlib.dll!System.Reflection.Emit.AssemblyBuilder.InternalDefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, ref System.Threading.StackCrawlMark stackMark, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> unsafeAssemblyAttributes, System.Security.SecurityContextSource securityContextSource) + 0x7e bytes 
mscorlib.dll!System.AppDomain.InternalDefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, ref System.Threading.StackCrawlMark stackMark, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes, System.Security.SecurityContextSource securityContextSource) + 0x2c bytes 
mscorlib.dll!System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access) + 0x2b bytes 
Castle.Core.dll!Castle.DynamicProxy.ModuleScope.CreateModule(bool signStrongName = true) + 0x1fa bytes 
Castle.Core.dll!Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName() + 0x9d bytes  
Castle.Core.dll!Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(bool isStrongNamed = true) + 0x2b bytes 
Castle.Core.dll!Castle.DynamicProxy.ModuleScope.DefineType(bool inSignedModulePreferably = true, string name = "Castle.Proxies.Invocations.Entity`1_Equals", System.Reflection.TypeAttributes flags = Public | Serializable) + 0x5a bytes 
Castle.Core.dll!Castle.DynamicProxy.Generators.Emitters.ClassEmitter.CreateTypeBuilder(Castle.DynamicProxy.ModuleScope modulescope = {Castle.DynamicProxy.ModuleScope}, string name = "Castle.Proxies.Invocations.Entity`1_Equals", System.Type baseType = {Name = "InheritanceInvocation" FullName = "Castle.DynamicProxy.InheritanceInvocation"}, System.Collections.Generic.IEnumerable<System.Type> interfaces = {System.Type[0]}, System.Reflection.TypeAttributes flags = Public | Serializable, bool forceUnsigned = false) + 0x68 bytes 

답변

0

예쁜 바보 : 여기 (긴 60 개 라인 ~ 모든 일이) 스택 트레이스의 상단입니다. 해당 계정이 Users 그룹에 속할 때 새 계정을 만듭니다. Guest 계정은 다른 계정보다 훨씬 더 제한적이지만 아마도 내가 할 수없는 특정 작업을 수행 할 수 있다고 가정했습니다 ...

나는 "게스트 사용자" 이 애플리케이션의 경우