문제

이해하지 못하는 다소 이상한 오류가 발생했습니다. 내 웹 서비스가 내 네트워크 외부에서 작동하는지 확인하기위한 테스트로 설계된 C# 콘솔 응용 프로그램을 만들었습니다. 그 모든 것은 웹 서비스에 연결하고 연결하고 각 단계를 콘솔에 출력 한 다음 텍스트 파일에 작성하여 로그를 보낼 수있었습니다.

3 개의 XP 머신 (네트워크 내부, 2 개의 외부)에서 완벽하게 작동했습니다. Vista Machine (매니페스트 파일이 있음)이지만 내 상사 XP 머신에서 (그는 IT 가이 사람이므로 그가 무엇을하고 있는지 알고 있습니다) 매우 이상한 오류를 던졌습니다.

C : temp testwe ~ 1. Exe NTVDM CPU가 불법 지시를 받았습니다.

http://www.houseofhawkins.com/roger.jpg ">

나는 인터넷 검색을했고 그의 NTVDM이 버거가 났을 수도 있고 바이러스 나 무언가가 있었던 것처럼 보였다. 이들 중 어느 것도 사실이 아닌 것 같습니다. 나는 이것이 그런 식으로 실패하게하는 일이 일어날 일을 알 수 없다.

시스템 사용; System.collections.generic 사용; system.text 사용; System.io 사용;

네임 스페이스 testwebservice {클래스 프로그램 {filestream thefile = null; 스트림 작가 작가 = null;

    static void Main(string[] args)
    {
        Program p = new Program();
        p.testMe();
    }

    private void testMe()
    {
        Console.WriteLine("Entered main method about to create stream");            
        try
        {
            theFile = File.Create(@"jonTestWebService.log");
            writer = new StreamWriter(theFile);
            writer.AutoFlush = true;

            try
            {
                message("Starting test at: " + DateTime.Now.ToLongTimeString());

                Random rand = new Random();

                message("creating new instance of webservice");
                houseofhawkins.testweb webServ = new testwebservice.houseofhawkins.testweb();

                message("calling hello world");
                String helloResult = webServ.HelloWorld();
                message("hello world result = " + helloResult);

                int one = rand.Next(999);
                int two = rand.Next(999);
                message("calling maths method with " + one + " + " + two);
                String mathResult = webServ.mytestMethod(one, two);
                message("Math result is: " + mathResult);



                message("Creating instance of CSJawbreaker");
                CSJawbreaker.InformationService csj = new testwebservice.CSJawbreaker.InformationService();

                message("trying to get the latest version number");
                float version = csj.latestVersionNumber();
                message("Version number: " + version.ToString());

                message("");
                message("Finished all processing at: " + DateTime.Now.ToLongTimeString());
            }
            catch (Exception ex)
            {
                writer.WriteLine("");
                writer.WriteLine(ex.Message);
                writer.WriteLine("");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("could not create stream Writer, " + ex.Message);
        }

        message("");
        message("Press return to exit");
        Console.ReadLine();

        writer.Close();
        theFile.Close();
    }

    private void message(String message)
    {
        if (theFile != null && writer != null)
        {
            Console.WriteLine(message);
            writer.WriteLine(message);
        }
    }
}

}

위의 코드가 왜이를 수행 할 수 있는지 매우 멈 춥니 다. 그것은 내가 알고 싶어하는 일종의 일이며, 부분적으로, 이것은 실제 클라이언트 기계에 일어날 수 있거나, 내 상사 기계가 감염된 것입니다.

고맙습니다

도움이 되었습니까?

해결책

NTVDM에서 끝나면 XP의 16 비트 DOS 에뮬레이션 레이어이므로 뭔가 잘못되었습니다. EXE를 재시험 한 후 다시 발생하면 Boss의 PC (.NET Framework 버전 등)에 설치된 소프트웨어를 조사 할 것입니다.

또한 WindBG에서 이것을 실행하여 어디에서 끝나는 지 확인하고, 결함이 나면 전화 스택을 받으십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top