0

POST 要求を使用してイベントについて、特定の IP とポートで別の HTTP サーバーに通知する以外に何もしない SPItemEventReceiver があります。

HTTP サーバーは sharepoint と同じコンピューター上で実行されるため、以前はローカルホストと固定ポート番号で通知を送信していました。ただし、イベントレシーバーはサーバーファーム内の他のサーバーで呼び出すことができるため、localhost:PORT は使用できません。

そのため、HTTP サーバーが起動するたびに、呼び出されたサーバーに関係なく、すべての EventReceiver がアクセスできる SharePoint のどこかにその IP アドレスとポートを保存する必要があります。

そのようなグローバルに利用可能な情報を格納するのに適した場所はどこでしょうか?

についてSPWebService.ContentService.Properties考えましたが、それが良いアイデアかどうかはよくわかりません。どう思いますか?

4

2 に答える 2

3

SharePoint 2010 を使用している場合は、これらの値をプロパティ バッグに保存することを検討します。クライアント オブジェクト モデルまたは Javascript/ECMAScript クライアント オブジェクト モデルの使用。これらのコードが役立つかもしれません。

using (var context = new ClientContext("http://localhost"))
{
  var allProperties = context.Web.AllProperties;
  allProperties["testing"] = "Hello there";
  context.Web.Update();
  context.ExecuteQuery();
}

またはJavaScriptを使用して:

    function getWebProperty() {
        var ctx = new SP.ClientContext.get_current();
        var web = ctx.get_site().get_rootweb();
        this.props =  web.get_allProperties();
        this.props.set_item(“aProperty”, “aValue”);
        ctx.load(web);

        ctx.executeQueryAsync(Function.createDelegate(this, gotProperty), Function.createDelegate(this, failedGettingProperty));
    }

    function gotProperty() {
        alert(this.props.get_item(“aProperty”));
    }

    function failedGettingProperty() {
        alert("failed");
    }

ソース: https://sharepoint.stackexchange.com/questions/49299/sharepoint-2010-net-client-object-model-add-item-to-web-property-bag

https://www.nothingbutsharepoint.com/sites/devwiki/articles/Pages/Making-use-of-the-Property-Bag-in-the-ECMAScript-Client-Object-Model.aspx

于 2013-02-05T12:56:34.030 に答える
2

SharePointに構成値を保存するには、実際にはいくつかの方法があります。

  • SharePointオブジェクトのプロパティバッグSPWebApplication, SPFarm,SPSite、SPWeb、SPList、SPListItem`
  • SharePointの「構成」リスト-設定する可能性のある通常のリストHidden = TRUE
  • web.configファイル-具体的には<AppSettings>

Wictor Wilenは、SharePointに設定を保存する6つの方法を実際に説明しています。

設定をどこかに保存しようとする外部プロセスについて話しているので、通常はweb.configをお勧めしますが、web.configを変更するたびにIISRESET、適切なオプションではなくなります。SPWebApplication.Propertiesお気に入りのWebサイトでプロパティバッグ(バッグなど)または非表示リストのいずれかを使用することを強くお勧めします。プロパティバッグを次のように設定します。

SPWebApplication webApplication = ...
object customObject = ...
// set value in hashtable
webApp.Add("MySetting", customObject);
// persist the hashtable
webApp.Update();

これについて何がクールかわかりますか?オブジェクトをシリアル化可能に保つ限り、複数の設定を含む可能性のあるWebアプリケーションでオブジェクトを実際に保存できます。

于 2013-02-05T16:41:43.437 に答える