一个Moss代码搜索范例

目前在Web应用程序中通过调用Object Model的方式,存在问题,可能原因有2点:1、页面没有通过MOSS的安全验证。2、执行的代码与Moss不是同一线程,无权限,notice:很多操作不在同一线程,即使提升权限也无法处理。

     MossSearch.QueryService query = new SSOTest.MossSearch.QueryService();
            StringBuilder sbXml = new StringBuilder();
            string keywordString = "test";
            sbXml.Append("<QueryPacket xmlns='urn:Microsoft.Search.Query'>");
            sbXml.Append(" <Query>");
            sbXml.Append("      <SupportedFormats>");
            sbXml.Append("          <Format revision='1'>");
            sbXml.Append("              urn:Microsoft.Search.Response.Document:Document");
            sbXml.Append("          </Format>");
            sbXml.Append("      </SupportedFormats>");
            sbXml.Append("      <Context>");

            //language可以设置成en-us等不同语言, type可以设成MSSQLFT,表示使用sql查询的格式

          //关于关键字检索与SQL查询的两种方式,具体看参照wss的SDK:)
            sbXml.Append("          <QueryText language='zh-cn' type='STRING'>");
            sbXml.Append(keywordString);
            sbXml.Append("          </QueryText>");
            sbXml.Append("      </Context>");
            sbXml.Append(" </Query>");
            sbXml.Append("</QueryPacket>");

            //Sharepoint服务默认情况下是关闭匿名访问的,可以使用此方式指定访问时的用户名和密码,
            //如果在域里面也可以使用 System.Net.NetworkCredential credentials = System.Net.CredentialCache.DefaultCredentials;
            System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("administrator", "password01!");
            query.Credentials = credentials;

            // 返回xml格式的查询结果
            string aa = query.Query(sbXml.ToString());
            Response.Write(aa);

你可能感兴趣的:(OS)