2011-02-09 2 views
1

나는 해결하려고하는 흥미로운 문제가 있습니다. 기본적으로 html 파일과 값을 병합하고 결과 집합을 제공하는 함수 인 다음 코드가 있습니다. 나는 그 목적을 위해 해시 테이블을 사용하고있다.C# Hashtable "개체 참조가 설정되지 않았습니다"

기능은 다음과 같이 우리의 dev에 그것은 완벽하게 작동되는 라이브 서버에서

public static string ParseTemplate(string _FileName, int _NumberofSomething) 
{ 
    Hashtable templateVars = new Hashtable(); 
    templateVars.Add("NameOfFile", _FileName); 
    templateVars.Add("NumberOfSomething", _NumberofSomething); 
    TemplateParser.Parser parser = 
     new TemplateParser.Parser(
      System.Web.HttpContext 
      .Current.Server.MapPath("~/docs/Templatenr.htm"), templateVars); 
    return parser.Parse(); 
} 

(나는이 기능을 상속하고 현재 변경 될 수없는 명심하시기 바랍니다)입니다. 그러나 다른 프로덕션 서버에 응용 프로그램을 배포하고 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." 그것은 정확하게 "Hashtable templateVars = new Hashtable();" 선. 그래서 나는 다소 당황 스럽다. 코딩 문제라면 어디서나 작동하지 않아야합니까?

다른 프로덕션 서버 간의 유일한 차이점은 실행중인 OS와 IIS입니다. 즉. Server 2005와 IIS7, Server2003 및 IIS6 (IIS7이 중단되는 환경) 둘 다 .net 프레임 워크가 3.5 개까지 설치되어 있습니다. 구형 OS와 ISS가 문제가 될 수 있습니까? 어쩌면 허가/기억일까요? 새 프로덕션 서버에서 사용하고있는 다른 모든 .net 기능이 완벽하게 작동하기 때문에 약간의 타당성이 없습니다.

발견 된 해시 테이블에 관한 모든 문제는 인스턴스화되지 않은 것에 관한 것입니다. 그러나 내 오류가 해시 테이블을 인스턴스화하려고하는 줄에 발생합니다.

누구에게도 이전과 같은 오류가 있었습니까? 그렇다면 어떻게 해결 했습니까? 내가 뭘 찾아야할지 제안 해 주시면 고맙겠습니다. 나중에 다른 사람이이 오류가 발생하는 경우 결과를 게시합니다.

+1

'System.Web.HttpContext.Current.Server.MapPath ("~/docs/Templatenr.htm")'이 파일이 새 서버에 있습니까? 또한 응용 프로그램을 실행하는 사용자 계정이이 파일에 액세스 할 수 있습니까? – Jimmy

+1

개인적으로 Reflector Pro와 같은 도구를 사용하여 HashTable 생성자에 대한 Framework 코드로 디버깅하여 예외가 실제로 어디에서 던져 졌는지 확인하는 것이 좋습니다. –

+0

@ 지미, 예, 예. 그러나 그 기능은 멀리까지 가지지 못하지만 첫 번째 줄에서 멈 춥니 다. – Sonja

답변

0

나는이 오류의 맨 아래에 실제로와 있지 않습니다. Reflector Pro에서 원격 디버깅을 사용하기위한 제안은 웹 사이트가 실행되고있는 가상 서버의 일부 문제를 가리키며 작동하지 않았습니다. 로그 파일 검사에서 .net 프레임 워크가 버린 다른 오류가 나타납니다.

웹 사이트가 IIS7 및 Windows Server 2008을 사용하여 새 가상 서버로 이동되었습니다. 새로운 환경에서 그대로 작동했습니다.

이것은 아마도 모든 사람에게 이상적인 솔루션이 아니며 프레임 워크를 다시 설치하면 문제가 해결 될 수 있지만 새로운 환경으로 전환하는 과정에서 (다른 이유로 인해)이 솔루션이 적합했습니다.

관련 문제