2012-10-30 61 views
1

我在asp.net應用程序中使用需要某些瀏覽器功能(JavaScript特別是)的3方web控件。使用瀏覽器文件隱藏第三方控件使用瀏覽器文件無法正常工作

控件正在檢查瀏覽器是否具有所需的功能,如果沒有,則會拋出異常。

當瀏覽到使用此控件的頁面時,這是正常的,但是當機械手索引頁面時,會拋出錯誤(因爲爬蟲的用戶代理沒有提供所需的功能)。

由於我無法控制如何/何時控制實例化,我試圖短路控制,以避免檢查。爲了達到這一點,我已經創建自定義瀏覽器的文件,我已經把APP_Browsers文件夾:

<?xml version="1.0" encoding="utf-8"?> 
<browsers> 
    <browser refID="Default"> 
     <controlAdapters> 
      <adapter controlType="Microsoft.SharePoint.WebControls.Gantt, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" 
        adapterType="myNS.MyAdapter, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c02e9cbf6dab9cb0" /> 
     </controlAdapters> 
    </browser> 
</browsers> 

(是的,這是一個SharePoint的控制,但我想這是超出範圍)

而且這裏是適配器的代碼:

namespace myNS 
{ 
    public class MyAdapter: ControlAdapter 
    { 
     protected override void OnLoad(EventArgs e) 
     { 
      System.Diagnostics.Debugger.Break(); 
      var context = HttpContext.Current; 
      if (context != null) 
      { 
       var browser = context.Request.Browser; 
       if (!browser.Crawler) 
       { 
        base.OnLoad(e); // 
       } 
      } 
     } 

     protected override void Render(System.Web.UI.HtmlTextWriter writer) 
     { 
      System.Diagnostics.Debugger.Break(); 
      var context = HttpContext.Current; 
      if (context != null) 
      { 
       var browser = context.Request.Browser; 
       if (!browser.Crawler) 
       { 
        this.Control.RenderControl(writer); 
       } 
      } 
     } 
    } 
} 

不幸的是,這是行不通的。我沒有錯誤消息,但代碼似乎從未被調用(Break()方法未觸發預期調試器窗口)。手動連接調試器並不會更好。

如何確保我的瀏覽器文件實際使用並正確?

回答

0

嗡嗡......不知道明白,但只要我修改「compat.browser」文件(不是我的),它開始工作。

奇怪