2012-10-14 58 views
1

我有一個應用程序被託管在某處(webhostingworld.net),我有一個困境。我有一個工具(簡單的exe文件,在.net 4 anycpu中)執行一些離線的東西,它是由'Parallel Plesk Panel 11.0.9'作爲'預定任務'啓動的。一切都很好,直到我添加了一個通用的方法。c#通用方法崩潰

  • 基本上,它只是一個從數據庫讀取json字符串並將其返回的虛擬方法;
  • 該進程剛剛死亡,沒有發生異常 - 我必須將日誌記錄從一個地方放到另一個地方,最後一件事是在調用此方法之前進行日誌記錄以及其中的第一件事。在調用這個方法之前的日誌記錄就在那裏,方法內部沒有;
  • 方法聲明如下:

public T Get<T>(string id);

  • 我接觸他們提出一些反饋 - 在系統日誌,也許他們看到的東西,但我懷疑他們會帶來一些光;
  • 在我的電腦上工作正常(不是總是這樣嗎?);
  • 試圖在所有CPU的口味編譯:86,64,anyCPU並具有相同的行爲...

我跑出ideeas的。我總是可以嘗試使用通用對象(也許這可能是一個更好的代碼尺寸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

你可以發佈'公共T代碼(字符串id)'和調用它的代碼行嗎? –

+0

安裝在機器應用程序上的.Net框架正在運行?泛型不支持框架1.0/1.1 – jags

+0

這是一個.NET 4 - 簡單的普通exe文件.net 4 anycpu' –

回答

0

用戶可能只擁有「客戶」安裝.NET 4.0運行時,你可能會使用需要「完全」 .NET 4.0運行時。See this上的差異更多信息功能。

此外,您可以嘗試掛鉤到未處理的異常事件記錄錯誤。See this的桌面應用程序,並this的Web應用程序。

如果一切都失敗了,你可以開始磕碰您的應用程序的底層統治出於溝通或其他原因用對返回硬編碼的JSON字符串的模擬數據庫的調用替換數據庫調用)

+0

並非如此。我有解決方法 - 通過刪除模板的東西解決了問題,它工作正常。我正在使用完整的.net版本。 – dcg

0

有時編譯器生成的代碼不能通過驗證。如果發生這種情況,如果您的代碼沒有完全信任(可能在這種情況下),則可能會遇到類似問題。通過運行PEVerify驗證您的代碼是否可驗證。