2013-04-23 72 views
1

所以,我想檢測.NET 4.NET移動偵測不一致

移動請求我發現了Request.Browser.IsMobile和Request.Browser.MobileDeviceModel。這對我的Windows 7筆記本電腦開發環境很好。使用我的iPad:IsMobile=trueMobileDeviceModel="IPad"

但是當我在Windows 2008 Server上檢查這個時,我得到IsMobile=falseMobileDeviceModel="Unknown"

挖了一段時間後,我發現這些特性是通過XML文件.NET Framework中的文件夾燃料:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers 然後,我發現我的筆記本電腦的瀏覽器\ iphone.xml擁有iPad的信息,而我的服務器的相同文件夾和同一個文件不包含ipad信息。

<browsers> 
    <gateway id="IPhone" parentID="Safari"> 
     ... 
    </gateway> 

    <gateway id="IPod" parentID="Safari"> 
     ... 
    </gateway> 

    <gateway id="IPad" parentID="Safari"> 
     <identification> 
     <userAgent match="iPad" /> 
     </identification> 

     <capabilities> 
     <capability name="isMobileDevice"   value="true" /> 
     <capability name="mobileDeviceManufacturer" value="Apple" /> 
     <capability name="mobileDeviceModel"  value="IPad" /> 
     </capabilities> 
    </gateway> 
</browsers> 

我的第一個問題是將我的瀏覽器文件複製到服務器上。但是我想確保它是安全和正確的。爲什麼我的筆記本電腦有這些額外的設備,但不是我的服務器?這是完全相同的.net版本。而且,正在複製這些文件是我唯一需要做的事情嗎?

回答

3

你肯定你的筆記本電腦實際上並沒有.NET 4.5安裝?它安裝在C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30313中的相同位置,這有點讓人誤解。如果你使用的是VS2012,那麼你很可能已經安裝了.NET 4.5,它可以有額外的瀏覽器配置。

在任何情況下,那麼,你應該能夠簡單,如果你確定你確實有不匹配的版本在你的服務器移動這個文件到你的服務器,或升級到.NET 4.5。

0

我們不得不這樣做我們的生產服務器,因爲我們還沒有準備好升級到.NET 4.5,但仍然產生了導致ASP.NET認爲IE 10和11不支持JavaScript的瀏覽器檢測的問題。修復方法是將.browser文件從.NET 4.5機器複製到生產Web服務器,並重新編譯.browser文件。請注意,重新編譯並不是免費的,因爲它會導致IIS重置,從而觸發任何用戶。另外請注意,我們在將其推向生產之前,在較低的集成環境中嘗試了這一點。