WSAS Doc Libary에 파일을 업로드하는 ASP.NET 웹 응용 프로그램을 만들었습니다. 파일이 라이브러리의 '시스템 계정'아래에 추가됩니다. FullTextSqlQuery 클래스는 문서 libary 항목을 검색하는 데 사용됩니다. 그러나 '관리자'와 같은 Windows 사용자 계정에 의해 업로드 된 파일 만 검색하고 '시스템 계정'에 의해 업로드 된 파일은 무시합니다. 결과적으로 문서 라이브러리에 필요한 데이터가 있더라도 검색 결과는 비어 있습니다. 이것에 대한 이유는 무엇일까요? 이 코드는 다음과 같습니다Windows Sharepoint Services - FullTextSqlQuery 문서 라이브러리 시스템 계정으로 만든 항목을 찾을 수 없습니다.
공공 정적 목록 GetListItemsFromFTSQuery (문자열 검색 텍스트) { 문자열 docLibUrl = "http://localhost:6666/Articles%20Library/Forms/AllItems.aspx"; 목록 항목 = 새 목록(); DataTable retResults = new DataTable();
SPSecurity.RunWithElevatedPrivileges(delegate
{
using (SPSite site = new SPSite(docLibUrl))
{
SPWeb CRsite = site.OpenWeb();
SPList ContRep = CRsite.GetListFromUrl(docLibUrl);
FullTextSqlQuery fts = new FullTextSqlQuery(site);
fts.QueryText =
"SELECT Title,ContentType,Path FROM portal..scope() WHERE freetext('" +
searchText +
"') AND (CONTAINS(Path,'\"" +
ContRep.RootFolder.ServerRelativeUrl + "\"'))";
fts.ResultTypes = ResultType.RelevantResults;
fts.RowLimit = 300;
if (SPSecurity.AuthenticationMode != System.Web.Configuration.AuthenticationMode.Windows)
fts.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery;
else
fts.AuthenticationType = QueryAuthenticationType.NtAuthenticatedQuery;
ResultTableCollection rtc = fts.Execute();
if (rtc.Count > 0)
{
using (
ResultTable relevantResults =
rtc[ResultType.RelevantResults])
retResults.Load(relevantResults,
LoadOption.OverwriteChanges);
foreach (DataRow row in retResults.Rows)
{
if (!row["Path"].ToString().EndsWith(".aspx"))
//if (row["ContentType"].ToString() == "Item")
{
using (
SPSite lookupSite =
new SPSite(row["Path"].ToString()))
{
using (SPWeb web = lookupSite.OpenWeb())
{
SPFile file =
web.GetFile(row["Path"].ToString());
items.Add(file.Item);
}
}
}
}
}
} //using ends here
});
return items;
}