做了個多語種網站
在BaseForm類(表單父類)中 重寫InitializeCulture以設定瀏覽器預設語言
protected override void InitializeCulture()
{
CurLanguage = Request.UserLanguages[0].ToLower();
string UserCulture = CurLanguage;
if (UserCulture != "")
{
//根據Session的值重新綁定語言代碼
Thread.CurrentThread.CurrentUICulture = new CultureInfo(UserCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
}
}
///當前頁面語種(封裝對Session["PreferredCulture"] 的讀寫)
public string CurLanguage
{
set
{
if (Session["PreferredCulture"] == null)
{
Session.Add("PreferredCulture", value);
}
else
{
Session["PreferredCulture"] = value;
}
}
get
{
if (Session["PreferredCulture"] == null)
{
Session.Add("PreferredCulture", "");
return Utilities.ObjectHelper.GetString(Session["PreferredCulture"]);
}
else
{
return Utilities.ObjectHelper.GetString(Session["PreferredCulture"]);
}
}
}
網站發布後沒有問題,但是過了半個月客戶反映GOOGLE沒辦法收錄,BAIDU可以收錄
百思不得其解
一日有了靈感,查看了一下該網站的IIS訪問日誌,發現了一條記錄
/index.aspx - 80 - 209.85.238.25 AdsBot-Google+(+http://www.google.com/adsbot.html) 500 0 0 竟然有錯誤
然後使用GOOGLE的網站管理員工具進行測試,https://www.google.com/webmasters,都不能通過,還是提示500錯誤
於是自己使用fiddler工具對頁面進行請求,發現了問題所在
通過fiddler發出的請示,其Request.UserLanguages為空白!!!
找到了問題點就好解決了,在取值時加入空值判斷,
if (Request.UserLanguages == null )
{
CurLanguage = Helpers.GetConfigToString("DefaultLanguage"); ;
}
else {
if(!string.IsNullOrEmpty(Request.UserLanguages[0])){
CurLanguage = Request.UserLanguages[0].ToLower();
}
}
然後重新用fiddler,GOOGLE測試,問題解決,返回期待的"200"