2014-07-21 5 views
31

xf4 (MonoDevelop 또는 직접)에서 Fedora 20 워크 스테이션에서 ASP.NET MVC 4 웹 사이트를 실행할 때 다음 예외가 발생합니다 :"/ etc/mono/registry"경로에 대한 액세스가 거부되었습니다

System.Web.HttpRuntime.FinishWithException (wr={Mono.WebServer.XSPWorkerRequest}, e={System.Web.HttpException: ---> System.Web.HttpException: The pre-application start initialization method Start on type System.Web.WebPages.PreApplicationStartCode threw an exception with the following error message: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: An exception was thrown by the type initializer for <Module> ---> System.Security.SecurityException: No access to the given key ---> System.UnauthorizedAccessException: Access to the path "/etc/mono/registry" is denied. 
at System.IO.Directory.CreateDirectoriesInternal (System.String path) [0x00064] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/System.IO/Directory.cs:113 
at System.IO.Directory.CreateDirectory (System.String path) [0x000a4] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/System.IO/Directory.cs:80 
at System.IO.DirectoryInfo.Create() [0x00000] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/System.IO/DirectoryInfo.cs:141 
at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:Create() 
at System.IO.Directory.CreateDirectoriesInternal (System.String path) [0x00039] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/System.IO/Directory.cs:98 
at System.IO.Directory.CreateDirectory (System.String path) [0x000a4] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/System.IO/Directory.cs:80 
at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) [0x0004a] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs:136 
--- End of inner exception stack trace --- 
at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) [0x00057] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs:138 
at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir) [0x00000] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs:116 
at Microsoft.Win32.KeyHandler.Lookup (Microsoft.Win32.RegistryKey rkey, Boolean createNonExisting) [0x000cc] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs:412 
at Microsoft.Win32.UnixRegistryApi.OpenSubKey (Microsoft.Win32.RegistryKey rkey, System.String keyname, Boolean writable) [0x00000] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs:836 
at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name, Boolean writable) [0x0001e] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/Microsoft.Win32/RegistryKey.cs:278 
at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name) [0x00000] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/Microsoft.Win32/RegistryKey.cs:262 
at (wrapper remoting-invoke-with-check) Microsoft.Win32.RegistryKey:OpenSubKey (string) 
at Microsoft.Web.Infrastructure.RegistryKeyWrapper.OpenSubKey (System.String name) [0x00000] in <filename unknown>:0 
at Microsoft.Web.Infrastructure.KillBitHelper.GetKillBittedVersions() [0x00000] in <filename unknown>:0 
at Microsoft.Web.Infrastructure.KillBitHelper.IsThisAssemblyKillBitted() [0x00000] in <filename unknown>:0 
at Microsoft.Web.Infrastructure.KillBitHelper.ThrowIfKillBitIsSet() [0x00000] in <filename unknown>:0 
at Microsoft.Web.Infrastructure.ModuleInitializer+CriticalInitializer.CheckKillBit() [0x00000] in <filename unknown>:0 
at Microsoft.Web.Infrastructure.ModuleInitializer+CriticalInitializer.Initialize() [0x00000] in <filename unknown>:0 
at Microsoft.Web.Infrastructure.ModuleInitializer.Initialize() [0x00000] in <filename unknown>:0 
at <Module>..cctor() [0x00000] in <filename unknown>:0 
--- End of inner exception stack trace --- 
at System.Web.WebPages.PreApplicationStartCode.Start() [0x0002b] in /builddir/build/BUILD/mono-3.4.0/external/aspnetwebstack/src/System.Web.WebPages/PreApplicationStartCode.cs:40 
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) 
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00054] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/System.Reflection/MonoMethod.cs:230 
--- End of inner exception stack trace --- 
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00069] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/System.Reflection/MonoMethod.cs:238 
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in /builddir/build/BUILD/mono-3.4.0/mcs/class/corlib/System.Reflection/MethodBase.cs:114 
at System.Web.Compilation.BuildManager.CallPreStartMethods() [0x0004f] in /builddir/build/BUILD/mono-3.4.0/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs:561 
--- End of inner exception stack trace --- 
at System.Web.Compilation.BuildManager.CallPreStartMethods() [0x0007e] in /builddir/build/BUILD/mono-3.4.0/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs:564 
at System.Web.HttpApplicationFactory.InitType (System.Web.HttpContext context) [0x00059] in /builddir/build/BUILD/mono-3.4.0/mcs/class/System.Web/System.Web/HttpApplicationFactory.cs:408 
--- End of inner exception stack trace ---}) in /builddir/build/BUILD/mono-3.4.0/mcs/class/System.Web/System.Web/HttpRuntime.cs:674 

나는 그것을 확인했고 /etc/mono/에는 registry 파일이나 폴더가 없습니다. 나는 또한 어떤 하위 폴더에서 그것을 찾을 수 없다, 어떻게이 질문을 해결할 수 있습니까?

나는 최신 3.15.6 커널

$ mono --version 
Mono JIT compiler version 3.4.0 (tarball Fri Jun 27 17:26:36 UTC 2014) 
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com 
    TLS:   __thread 
    SIGSEGV:  altstack 
    Notifications: epoll 
    Architecture: amd64 
    Disabled:  none 
    Misc:   softdebug 
    LLVM:   supported, not enabled. 
    GC:   sgen 

$ xsp4 --version 
xsp4.exe 3.0.0.0 
Copyright (C) 2002-2011 Novell, Inc. 
Minimalistic web server for testing System.Web 

나는 우분투 14.04 LTS에서 다른 설정을 가지고 있고 그것이 내가 어쩌면 모노 버전과 일, 또는 수 있도록 하나가 작동 페도라 20를 실행하는거야 라이브러리가 누락 되었습니까?

답변

61

단순히 mkdir

sudo mkdir /etc/mono/registry

를 사용하여 폴더를 생성하고 chmod

sudo chmod uog+rw /etc/mono/registry

트릭을 수행하여 올바른 사용 권한을 설정 밝혀졌습니다.

그러나 나는 아직도 우분투에서 숨겨진 폴더가 어디인지, 왜 만들어지지 않을지 이해하지 못합니다. 물론 설치 중에 자동으로 만들어지지 않는 이유도 있습니다.

+7

을, 나는'sudo는 chmod를의 UOG + RW/등/모노/registry'을해야했다. 도와 주셔서 감사합니다! –

+0

@peter -이 디렉토리를 만들려고하지만 권한이 거부되었습니다. 그러나 저는 PC 관리자입니다. – xameeramir

+0

sudo로 명령을 실행 했습니까? – peter

1

당신이 제어 할 디렉토리를 가리 키도록 MONO_REGISTRY_PATH을 설정할 수 있습니다 내 경우

bash mkdir my-registry MONO_REGISTRY_PATH=`pwd`/my-registry xsp4