2010-08-27 50 views
2

在Sharepoint 2010安裝中,我們試圖抓取小型單節點SharePoint安裝的內容。抓取部分成功。我們能夠檢索從Web服務傳遞的數據(_vti_bin/sitedata.asmx),但是當爬蟲嘗試訪問整頁內容時,它會失敗。抓取日誌中顯示的錯誤消息是:SharePoint抓取 - STS4的Windows身份驗證失敗?

爬網程序無法與服務器通信。檢查服務器是否可用並且防火牆訪問配置是否正確。

這是在ULS記錄的錯誤是:

2010年8月27日01:52:02.92 mssdmn.exe(0x0A7C)0x03E4 SharePoint Server搜索HTTP協議處理du54高CHttpAccessorHelper :: InitRequestInternal - 意外狀況(500)請求'http://staging.dsr.dk/_layouts/error.aspx'身份驗證1. [httpacchelper.cxx:657] d:\ office \ source \ search \ native \ gather \ protocols \ http \ httpacchelper.cxx
08/27/2010 01:52: 02.92 mssdmn.exe(0x0A7C)0x03E4 SharePoint Server搜索PHSts dv44高CSTS3Accessor :: Init:InitRequest URL失敗http://staging.dsr.dk/Pages/Forside.aspx向調用方返回錯誤,hr = 80041206 [sts3acc.cxx:546] d:\ office \ source \ search \ native \收集\ protocols \ sts3 \ sts3acc.cxx
08:27:01:52:02.92 mssdmn.exe(0x0A7C)0x03E4 SharePoint服務器搜索PHSts dvb1高CSTS3Accessor :: Init失敗,URL sts4://staging.dsr.dk/siteurl=/siteid= {a78b7d4f- 059f-4484-8564-449cd12a97cf}/weburl =/webid = {1189e380-76fd-44b7-99a2-ebd4f7245c3d},hr = 80041206 [sts3handler.cxx:312] d:\ office \ source \ search \ native \ gather \ protocols \ sts3 \ sts3handler.cxx
08/27/2010 01:52:02.92 mssdmn.exe(0x0A7C)0x03E4 SharePoint Server搜索PHSts dvb2高CSTS3Handler :: CreateAccessorExD:向調用方返回錯誤,hr = 80041206 [sts3handler.cxx:330 ] d:\ office \ source \ search \ native \ gather \ protocols \ sts3 \ sts3handler.cxx

我們已經根據_http://support.microsoft.com/kb/896861(方法1)配置了系統。

我們使用Fiddler2來查看HTTP流量,這看起來很正常,也就是說,我們可以看到所有對_vti_bin/...的請求。但是,上面顯示的對sts4協議的請求沒有被Fiddler2捕獲。歡迎提供有關如何調試STS4流量的提示。

關於如何使抓取工具成功抓取整頁內容的任何建議?

謝謝!

托馬斯

回答

1

原來的提示躺在高一點了ULS日誌:

意外System.FormatException:輸入字符串的不正確的格式。 System.Convert.ToInt32(String value)at System.Number.ParseInt32(String s,NumberStyles style,NumberFormatInfo info)at System.Number.StringToNumber(String str,NumberStyles options,NumberBuffer & number,NumberFormatInfo info,Boolean parseDecimal) DSR.Portal.Core.Service.Identity.IdentityUtility.GetMember(String memberNumberOrCPR)at DSR.Portal.Core.Service.Identity.DSRMembershipProvider.GetUser(String username,Boolean userIsOnline)at DSR.Portal.Core.Service.Identity.DSRMembershipUser .get_Current()

我們已經實現了一個自定義的MembershipProvider,它期望用戶ID是數字。這對於Windows Authenticated用戶來說是失敗的,拋出上面的堆棧跟蹤。因此,抓取工具帳戶無法檢索頁面,這導致了「收集者」的問題。

因此,故事的士氣:始終確保Windows身份驗證的作品。

問候

托馬斯