asp.net 애플리케이션에서 일부 브라우저 기능 (특히 자바 스크립트)이 필요한 3 자 웹 컨트롤을 사용하고 있습니다.예상대로 작동하지 않는 브라우저 파일을 사용하여 검색 크롤러에서 타사 컨트롤 숨김
컨트롤은 브라우저에 필요한 기능이 있는지 확인하고 그렇지 않은 경우 예외를 throw합니다.
이 컨트롤을 사용하는 페이지로 이동할 때 문제가 없지만 로봇이 페이지를 인덱싱 할 때 크롤러의 사용자 에이전트가 필요한 기능을 제공하지 않으므로 오류가 발생합니다.
컨트롤이 인스턴스화되는 방법 /시기를 제어 할 수 없기 때문에 검사를 방지하기 위해 컨트롤을 단락하려고했습니다. 이에 도달하기 위해, 내가 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>
(예이있는 셰어 제어,하지만 난 그게 범위를 벗어나 겠)
그리고 여기 어댑터의 코드입니다 :
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()
메서드는 예상 디버거 창을 실행하지 않습니다). 수동으로 디버거를 연결하는 것은 좋지 않습니다.
브라우저 파일이 실제로 사용되고 있는지 확인하려면 어떻게합니까?