2013-05-20 115 views
1

我只是簡單介紹一下並提供一些背景信息:我們的應用程序有相當大的啓動問題,我們的webservice需要20(!!)秒才能響應第一個請求。在這個初始滯後之後,一切都運行得很快,但最初的滯後本身是一個相當大的問題。編譯時出現XMLSerializer錯誤

無論如何,我在過去兩天左右一直在研究這個問題,我設法得到了來回發送的請求的正確日誌,結果發現問題在於創建XMLSerializer ,這相當簡單,需要很長時間。

現在經過更多的使用Google搜索後,我發現了'生成序列化程序集'屬性,並且它不能正常工作。爲了強制序列化,我在這裏遵循了這個解決方案: https://stackoverflow.com/a/8798289/2401855

現在,實際上已經工作,除了......嗯,它沒有。當我嘗試編譯web服務時,Sgen會拋出'有反映類型的錯誤'錯誤,我不能繼續。最後,這裏來我的問題:

  • 我如何得到Sgen.exe引發的實際錯誤?它可能只是幫助我更好地理解發生了什麼,但我試圖查看代碼項目所指的系統日誌文件,但沒有發現任何內容。

  • 爲什麼錯誤首先被拋出?它被拋出的代碼特定位:

    public class Enums 
    { 
        public enum TypNakladu 
        { 
         Prijmy = 1, 
         Vydaje = 2 
        } 
    
        public static string GetEnumDescription(Enum value) 
        { 
         FieldInfo fi = value.GetType().GetField(value.ToString()); 
    
         DescriptionAttribute[] attributes = 
          (DescriptionAttribute[])fi.GetCustomAttributes(
          typeof(DescriptionAttribute), 
          false); 
    
         if (attributes != null && 
          attributes.Length > 0) 
          return attributes[0].Description; 
         else 
          return value.ToString(); 
        } 
    } 
    

「TypNakladu」是SGEN似乎並不喜歡枚舉。有沒有什麼辦法可以讓sgen忽略這個特殊的類,或者包含的枚舉? (還有更多,但是當我發表評論時,sgen只是抱怨下一個)

而這只是我想的。如果我在這裏犯了一個令人難以置信的愚蠢錯誤,我很抱歉,在ASP.NET webservices方面,我不是很有經驗。

回答

1

很好,我現在確實有一些答案,所以在這裏我們去:

至於由Sgen.exe拋出的錯誤,以獲得最佳的方法是很簡單不是通過Visual Studio IDE中運行它,只是使用我的服務器導航到該文件夾​​。我並沒有這樣做,因爲運行Sgen.exe直接給我更多的錯誤 - 事實證明我的硬盤上安裝了兩個Sgen版本。他們本機安裝了兩套Visual Studio。

現在對於錯誤本身,問題在於存在兩個相同枚舉名稱的實例,就像那樣簡單。