2012-10-14 5 views
1

어딘가에서 호스팅되는 응용 프로그램 (webhostingworld.net)이 있는데 딜레마가 있습니다. 일부 오프라인 물건을 수행하고 '예약 된 작업'으로 'Parallel Plesk Panel 11.0.9'에 의해 시작되는 도구 (net 4 anycpu있는 간단한 일반 exe)가 있습니다. 일반적인 방법을 추가 할 때까지 모든 것이 잘되었습니다.C# 일반 메소드 충돌

  • 기본적으로 데이터베이스에서 json 문자열을 읽고 반환하는 더미 메서드입니다.
  • 프로세스가 죽을 때 예외가 발생하지 않습니다. 장소와 장소에서 로깅을 넣어야했습니다. 마지막으로이 메서드를 호출하기 전에 로깅을 수행하고 그 내부에서 첫 번째 작업을 수행했습니다. 이 메소드를 호출하기 전에 로깅이 존재합니다. 메소드 내부의 로깅은 아닙니다.

public T Get<T>(string id);

  • 내가 어떤 의견을 물어 그들을 연락 - 시스템 로그에서 어쩌면 그들이 본 것을 그러나 나는 그들이 어떤 빛을 가져올 것이다 의심;
  • 메소드 선언은 다음과 같다
  • 내 컴퓨터의
  • 이 정상적으로 작동합니다 (항상 이와 같이 발생하지 않습니까?); ... 나는 ideeas 부족

을 86, 64, anycpu를 같은 동작이 :

  • 모든 CPU의 맛을 컴파일했습니다. 나는 항상 일반적인 객체를 사용하려고 노력할 수있다. (아마도 이것은 코드 크기 pov에서 더 좋은 ideea가 될 수있다. 그러나 이것은 또 다른 주제이다.) ... 그러나 이것이 일어나고있는 좋은 이유를 찾을 수 없기 때문에 상당히 실망 스럽다. ... 무슨 일이 벌어지고 있는지에 대한 이상이 있습니까?

    감사합니다.

    업데이트 : 코드는 다음과 같습니다 :

    public T Get<T>(string id) 
    { 
        Log.Debug("mary still has that little lamb"); 
    
        string jsonString = GetASimpleStringFromDatabase(id); // id has values like "ID", "TEMPPATH", "MAIL", etc; 
    
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); 
    
        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString))) 
        { 
         return ser.ReadObject(ms); 
        } 
    } 
    

    을 그리고 호출은 다음과 같습니다

    Log.Debug("Let's check if Mary has that little lamb"); 
    MyClass c = deserializer.Get<MyClass>(stuff); 
    

    첫 번째 로깅 문 ("의 확인하자") 표시, 두 번째 ("아직도 가지고있다"). .net 프레임 워크는 내 컴퓨터에있는 프레임 워크와 동일합니다 (최소한 버전과 관련하여). 확인해야 할 국기가 있는지 궁금합니다 ...

    업데이트 : 죄송 합니다만 지원 팀의 응원이 매우 느립니다. 이것에 대한 대답이 없습니다. 나는 '템플릿'없이 그것을 남겨 둘 것이다. :-(

  • +1

    'public T Get (string id)'코드와이 코드를 호출하는 코드 줄을 게시 할 수 있습니까? –

    +0

    컴퓨터 응용 프로그램에 설치된 .Net 프레임 워크는 무엇입니까? Generics는 Framework 1.0/1.1에서 지원되지 않습니다. – jags

    +0

    이것은 .NET입니다. 4.'.net 4 anycpu'에서 간단한 일반 exe. –

    답변

    0

    사용자는 닷넷 4.0 런타임이 설치되어있는 "클라이언트"있을 수 있습니다 당신은 차이에 대한 추가 정보를 원하시면 "전체"닷넷 4.0 런타임. See this을 필요로하는 기능을 사용할 수 있습니다.

    을 또한

    , 당신은 오류를 기록하는 처리되지 않은 예외 이벤트에 훅을 시도 할 수 있습니다. 바탕 화면 애플 리케이션을위한 See thisthis을 웹 애플 리케이션을위한.

    실패 다른 모든 경우에, 당신이 지배하는 응용 프로그램의 하위 계층을 스텁 시작할 수 의사 소통 또는 다른 원인들 (즉,하드 코딩 된 JSON 문자열을 반환하는 모의 데이터베이스 호출 등으로 데이터베이스 호출 대체)

    +0

    해당 사항 없음. 나는 문제를 해결하기 위해 템플릿을 제거함으로써 문제를 해결했다. 전체 .net 버전을 사용하고 있습니다. – dcg

    0

    때때로 컴파일러는 검증을 통과하지 못하는 코드를 생성합니다. 이 경우 코드가 완전 신뢰 (이 경우 가능성이 있음)가없는 경우 이와 같은 문제가 발생할 수 있습니다. PEVerify를 실행하여 코드를 검증 할 수 있는지 확인하십시오.