2

javascript から sharepoint 2007 サイトにアクセスする必要があります。基本的には search.asmx サービスを使用する必要がありますが、rest も jsonp もサポートしていないため、直接使用することはできません。

当初の計画は、rest と jsonp をサポートするカスタム wcf サービスを作成することでした。これは小さな仕事でしたが、Sharepoint の担当者にサービスを提供したとき、Sharepoint 2007 にインストールするためにサービスを wsp パッケージにパッケージ化して動作させることができた人はいませんでした。

この質問Rest Webservices for Sharepoint 2007によると、これはそれほど簡単ではない可能性があり、rest-typed url には httpmodule が必要です。サービスが SPContext にアクセスする必要があると思うので、スタンドアロン アプリとして実行するという別の考え方では不十分かもしれません。

アプリケーション ページを作成するだけで、コード ビハインド レンダリングをオーバーライドし、出力バッファをクリアし、MIME タイプを変更し、json シリアル化されたデータをレンダリングすることは可能でしょうか? したがって、URL はhttp://spsite/mycustomquery.aspx?q=mysearchtext&start=0&count=200&callback=mycallbackfunction.

アプリケーション ページは少なくとも Get をサポートしますが、SPContext にアクセスできますか?

これが私が始めたwcfサービスです。

契約

[ServiceContract]
public interface IRestSPQuery
{
    [OperationContract]
    [WebGet(UriTemplate = "query/{queryText}/{startAt}/{count}?callback={callback}", ResponseFormat = WebMessageFormat.Json)]
    [JSONPBehavior(callback = "callback")]
    ResultTable Query(string queryText, string startAt, string count, string callback);
}

実装

    public ResultTable Query(string queryText, string startAt, string count, string callback)
    {
        //http://sharepointsite/_vit_bin/CustomQuery/RestSPQuery.svc/Query/searchtext/0/200?callback=myfunction

        KeywordQuery keywordQuery = new KeywordQuery(SPContext.Current.Site);
        keywordQuery.StartRow = startAt;
        keywordQuery.RowLimit = count;
        keywordQuery.SortList.Add("Rank", SortDirection.Descending);
        keywordQuery.QueryText = queryText;
        ResultTableCollection searchResults = keywordQuery.Execute();
        ResultTable relevantResultsTable = searchResults[ResultType.RelevantResults];
        return relevantResultsTable;
    }
4

2 に答える 2

0

最終的にカスタム aspx ページを作成し、Render メソッドをオーバーライドして、json/jsonp を出力し、コンテンツ タイプを application/json に変更しました。

ソリューションとすぐにデプロイできる wsp ファイルは、http://www.filedropper.com/restqueryserviceにあります。

于 2013-01-10T07:20:27.377 に答える
0

を実装するソリューションに「.ashx」ファイルを追加してみてくださいIHttpHandler。このブログ記事によると、アプリケーション ページをソリューションに追加することで実行できますが、「.ashx」拡張子として保存します。この記事は SharePoint 2010 向けに書かれていますが、2007 で機能するかどうかを確認する必要があります。記事の残りの部分に従って、REST/JSONP 用にセットアップできるはずです。

于 2013-01-04T21:44:39.297 に答える