2010-07-07 11 views
0

我正在製作一個頁面,用於接受來自任何數量的頁面的發佈數據,我無法更改,訪問或以任何方式進行控制。如何在回發之前獲取時區

我需要以某種方式獲取用戶的時區。我知道,理想情況下發布頁面會這樣做,但我無法訪問這些頁面。

我已閱讀本網站的其他答案,並拿出幾乎2,但不是那裏的解決方案。

首先,有javascript。我可以讓javascript函數返回(或將標籤更改爲)正確的值,但問題是我在回發之前需要此信息。我一直在嘗試在另一頁上寫時區名稱並閱讀該頁面,但我不知道如何開始這樣做?歡迎使用JavaScript的任何其他解決方法,或者在調用Page_Load之前以任何方式強制調用此方法?

function getTimeZone() 
    { 
     var d = new Date() 
     var gmtHours = -d.getTimezoneOffset()/60; 
     var label = document.getElementById("<%=TZ.ClientID%>"); 
     label.textContent = "GMT " + gmtHours; 
    } 

第二種解決方案是從另一個頁面讀取它,我用這:

http://ipinfodb.com/ip_query.php?ip=192.36.167.120&timezone=true 

(完全隨機的IP在那裏,順便說一句)

因此,這裏是我的功能從該網站獲取信息:

 public string GetTimezone(string ip) 
    { 
     string address = string.Format("http://ipinfodb.com/ip_query.php?ip={0}&timezone=true", ip); 
     string timezone = ""; 

     try 
     { 
      XmlTextReader reader = new XmlTextReader(address); 
      HttpWebRequest wrq = (HttpWebRequest)WebRequest.Create(address); 
      wrq.Proxy.Credentials = CredentialCache.DefaultCredentials; 
      reader = new XmlTextReader(wrq.GetResponse().GetResponseStream()); 

      string lastRead = ""; 
      while (reader.Read()) 
      { 
       if (reader.NodeType == XmlNodeType.Element) 
       { 
        lastRead = reader.Name; 
       } 
       if (reader.NodeType == XmlNodeType.Text) 
       { 
        if (string.Compare(lastRead, "TimezoneName", true) == 0) 
        { 
         timezone = reader.Value; 
         break; 
        } 
       } 
      } 
     } 
     catch 
     { 
      timezone = ""; 
     } 

     return timezone; 
    } 

基本上,它在調試模式下工作,但是當它只是活返回空字符串。我很困惑?有沒有更好的方法來讀取頁面中的數據?我使用Request.ServerVariables [「REMOTE_ADDR」]來獲取IP,這似乎是正確的,因爲它將正確的IP插入到我正在使用的數據庫中。

這裏是呼叫:

GetTimezone(Request.ServerVariables["REMOTE_ADDR"]); 
+0

擺脫邪惡的「抓」塊。 – SLaks 2010-07-07 20:14:57

回答

0

你越來越可能是因爲在生產服務器上的信任問題/防火牆的例外。

擺脫邪惡的catch區塊,以便找出異常情況。

+0

我得到的異常是:請求'System.Net.WebPermission,System,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'類型的權限失敗。 – Brandi 2010-07-07 21:25:48

+1

正如我懷疑,你的虛擬主機不讓你的服務器發出HTTP請求。抱怨他們的支持部門或切換到更好的主機。 – SLaks 2010-07-07 21:35:19

+0

我改變了網絡配置<信任級別=「完整」/>,並做了訣竅。感謝您指引我正確的方向。 :) – Brandi 2010-07-07 21:59:58

相關問題