[Asp.net] 用Fiddler測試WebAPI語系報錯

  • 1808
  • 0
  • 2016-12-19

[ASP.Net] 用Fiddler測試WebAPI語系報錯

為了測試WebAPI

剛好有找到其他大大推薦的工具---Fiddler

於是開始使用這套工具

但這次使用時我的API卻出現了下面這個錯誤

ExceptionMessage":"並未將物件參考設定為物件的執行個體。"

逐行執行後發現錯誤點是在下面這段

        /// <summary>
        /// 依語系產生i18n
        /// </summary>
        /// <param name="name">Resource的Name</param>
        /// <returns></returns>
        public static string Toi18n(this string name)
        {            
            try
            {
                string lang = HttpContext.Current.Request.UserLanguages[0]; // 錯誤點
                System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(lang);

                var value = FubonResource.FubonResource.ResourceManager.GetString(name,ci);
                if (!string.IsNullOrEmpty(value))
                    return value;
                else
                    return name;
            } catch (Exception ex)
            {
                throw ex;
            }            
        }

UserLanguages??? 字面上翻譯是使用者語言

抱著實驗的精神用瀏覽器打開結果可以正常執行

只有Fiddler會報錯

檢查一下兩方的標頭發現瀏覽器有加入下面這行

Accept-Language:zh-TW,zh;q=0.8,en-US;q=0.6,en;q=0.4,zh-CN;q=0.2

抱著實驗的精神把它放入Fiddler的標頭

結果就正常執行了!!!

原來.net MVC的語系選擇是利用標頭檔來執行的

Write By Charley Chang 


新手發文,若有錯誤還請指教,
歡迎留言或Mail✉給我

創用 CC 授權條款


本著作係採用創用 CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款授權.