首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在哪里存储我的SPItemEventReceivers的全局设置?

在哪里存储我的SPItemEventReceivers的全局设置?
EN

Stack Overflow用户
提问于 2013-02-05 20:12:39
回答 2查看 634关注 0票数 0

我有一个SPItemEventReceiver,它除了使用POST请求通知位于给定IP和端口的另一个超文本传输协议服务器上的事件之外,什么也不做。

HTTP服务器与sharepoint运行在同一台计算机上,因此我习惯于在本地主机和固定端口号上发送通知。但由于可以在服务器场中的其他服务器中调用eventreceiver,因此localhost:PORT将不可用。

因此,每当我的超文本传输协议服务器启动时,它需要将它的IP地址和端口保存在所有EventReceivers都可以访问的SharePoint中的某个地方,无论它们被调用的是什么服务器。

什么是存储这些全球可用的信息的好地方?

我考虑过SPWebService.ContentService.Properties,但我不太确定这是不是一个好主意。你认为如何?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-06 00:41:43

在SharePoint中保存配置值实际上有几种方法:

  • 属性包of SharePoint objects SPWebApplication, SPFarm,SPSite,SPWeb,SPList,SPListItem`
  • SharePoint中的"configuration“列表-您可以将其设置为web.config文件的常规列表-特别是SPListItemItem.

维克多·威伦实际上解释了6 ways to store settings in SharePoint

当您谈到外部进程试图将其设置保存在某个地方时,通常我会推荐web.config,但web.config中的每一次更改都会导致IISRESET使其不是一个好的选择。我强烈建议在你最喜欢的网站中使用属性包(例如SPWebApplication.Properties包)或隐藏列表。您可以像这样设置属性包:

代码语言:javascript
代码运行次数:0
运行
复制
SPWebApplication webApplication = ...
object customObject = ...
// set value in hashtable
webApp.Add("MySetting", customObject);
// persist the hashtable
webApp.Update();

看看这有什么酷的?只要你保持你的对象是可序列化的,你就可以用web应用程序存储一个对象,这个web应用程序可以包含多个设置。

票数 2
EN

Stack Overflow用户

发布于 2013-02-05 20:56:34

好吧,如果你使用Sharepoint 2010,我会考虑将这些值存储在属性包中。使用客户端对象模型,甚至使用Javascript/ECMAScript客户端对象模型。这些代码可能会对你有所帮助。

代码语言:javascript
代码运行次数:0
运行
复制
using (var context = new ClientContext("http://localhost"))
{
  var allProperties = context.Web.AllProperties;
  allProperties["testing"] = "Hello there";
  context.Web.Update();
  context.ExecuteQuery();
}

或者使用javascript:

代码语言:javascript
代码运行次数:0
运行
复制
    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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14707288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档