공룡호가 사는 세상 이야기

닷넷 프레임워크 버전 변경을 했다가, 한참 고생했다.

'/xxxxx' 응용 프로그램에 서버 오류가 있습니다.

IIS 메타베이스에 액세스하지 못했습니다.

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.

예외 정보: System.Web.Hosting.HostingEnvironmentException: IIS 메타베이스에 액세스하지 못했습니다.

ASP.NET을 실행하는 데 사용되는 프로세스 계정에는 IIS 메타베이스(예: IIS://servername/W3SVC)에 대한 읽기 권한이 있어야 합니다. 메타베이스 권한을 수정하는 데 대한 자세한 내용은 http://support.microsoft.com/?kbid=267904를 참조하십시오.

소스 오류:

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 원인 및 위치 정보를 확인할 수 있습니다.

스택 추적:

[HostingEnvironmentException: IIS 메타베이스에 액세스하지 못했습니다.]
   System.Web.Configuration.MetabaseServerConfig.MapPathCaching(String siteID, VirtualPath path) +3492202
   System.Web.Configuration.MetabaseServerConfig.System.Web.Configuration.IConfigMapPath.MapPath(String siteID, VirtualPath vpath) +9
   System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath virtualPath, Boolean permitNull) +163
   System.Web.CachedPathData.GetConfigPathData(String configPath) +382
   System.Web.CachedPathData.GetConfigPathData(String configPath) +243
   System.Web.CachedPathData.GetApplicationPathData() +68
   System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp) +3385711
   System.Web.Configuration.RuntimeConfig.GetLKGRuntimeConfig(VirtualPath path) +189


버전 정보: Microsoft .NET Framework 버전:2.0.50727.42; ASP.NET 버전:2.0.50727.42



해 결 방 법
aspnet_regiis.exe 도구를 사용하면 된다.
aspnet_regiis.exe 는 windows폴더에 microsoft.net 폴더 아래에 있고,
cmd에서 해당 경로를 찾아가서 아래와 같이 입력한다.
aspnet_regiis.exe -ga iwam_계정이름(컴퓨터이름)
예)C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe
그러면 iis메타베이스에 대한 접근 권한을 iwam 계정이 갖게 된다.
iwam계정은 iis 프로세스를 시작시키기 위한 식별자 계정.
그리고 나서 iis 를 열고 등록정보 중에 http 헤더부분을 보면 사용자지정 헤더부분에
X-Powered-By:APS.NET 이라고 있는지 확인 한 후,

없으면
다시 aspnet_regiis.exe를 열고
aspnet_regiis -i 
돌아가는지 확인
안되면
aspnet_regiis -e
aspnet_regiis -i
돌아가는지 확인

'프로그래밍' 카테고리의 다른 글

놀라운 Ajax solitaire 카드 놀이  (0) 2007.12.07
Ping 날리는 소스  (2) 2007.11.21
다음커뮤니케이션 R&D 팀장 IBM developerWorks Interview  (0) 2007.10.04
C# TIP 몇가지  (0) 2007.10.04
구글 가젯 만들기, Part1  (1) 2007.08.21

폴더 및 드라이브를 손쉽게 동기화 해주는 프로그램 입니다.
여차저차, 제가 필요해서 간단히 만들게 되었지만 아직 테스트가 올바로 이루어져 있지 않아,
공개하기에 조금 조심스럽습니다만... 버그를 발견하는 가장 빠른 길이라 여겨져서 이렇게 내놓아 봅니다.
사용법을 굳이 설명해 드리지 않아도 알 수 있을 정도이니 간략하게 마무리 하겠습니다.
동기화 할 원본/대상 폴더 및 드라이브를 설정하고 동기화 시작 버튼을 누르면 동기화가 되는데,
'최근 파일로 동기화'를 선택하면, 두 경로에서 동일한 위치에서 동일한 파일이 발견될 경우,
수정일자가 최근으로 설정되어 있는 파일로 동기화를 실시합니다.
반대로 '확인 후 동기화'를 선택하면, 팝업을 통해 어느 파일로 동기화를 실시할 것인지 묻고,
사용자의 선택에 따라 동적으로 동기화를 실시합니다.


사실, 폴더나 드라이브를 동기화 할 일은 많지 않지요.
하지만, USB메모리 하나 쯤은 누구나 가지고 다니는데, 분실이나 파손 등의 이유로 데이터 손실을 우려하여,
하드디스크 등에 백업을 하게 되는데, 백업을 할 시기를 놓쳐 꽤 오랜 시간 동안 백업을 실시하지 않았고,
USB가 현재 없어서 급한대로 하드디스크에 백업된 데이터를 대상으로 작업을 수행하거나 새로운 파일 등을 추가 했을 때에는 완전히 동일했던 USB와 하드디스크의 백업본조각나기 시작합니다.

이럴 경우에는, 사용자가 일일이 파일을 봐 가면서 어느 것의 파일이 보관되어야 할 파일인지 알아보고,
 손수 작업을 해 주어야 하는 불편함이 있는데, 이 작업을 조금 도와주는 툴이라 생각하면 될 것 같습니다.
 조각난 파일들의 리스트를 모아서 리스트로 보여주고 사용자에게 선택을 하게 해 주니,
 빠트릴 염려도 없고 좀 더 빠르게 동기화가 가능합니다만...
어차피 그 선택은 사람이 하는 것이기 때문에 혹시나 실수로 잘못된 파일을 선택하고 동기화를 진행하는 일에 대해서는 현재 방법이 없습니다.(사용자의 실수까지 커버할 수는 없으니까요)

그래서,
동기화를 진행할 때 마다, 원본 및 대상 데이터들을 일정 공간에다가 백업 해 두고 동기화를 진행하는 방안도,
 생각해 보지 않은 것은 아니나, 동기화 할 데이터들이 굉장히 큰 데이터라면 그 시간은 2배 이상이 될 것이고, 또한 동기화를 진행할 때 마다 백업을 한다면 그 데이터들이 모여 더 큰 데이터들을 만들 우려도 있어
 이 부분은 조금 더 생각을 해 봐서, 보다 간단하게 실수를 보정할 수 있는 기능을 추가할 예정입니다.
(좋은 아이디어 있으신 분은 메일 주시면 감사 드리겠습니다)
라이센스 같은건 당연히(!) 없으므로 아무나 사용하셔도 되고 배포 또한 무방합니다.

닷넷 기반에서 작성 되었으므로,
.NET FrameWork 2.0 이 필요 합니다.
받아서 실행이 되지 않으시는 분들은, 아래 링크에서 dotnetfx.exe를 받아 설치하면 됩니다.
http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe

다운 받으시거나, 사용하시는 분들은 꼬리 한번 주시는 센스 -ㅁ-

사용 해 보시는 분들의 버그 레포팅 받겠습니다. 너무 대충 짠 거라, 많은 버그가.. ㅠㅠ