zoukankan      html  css  js  c++  java
  • SharePoint 2013 代码创建应用程序目录(App Catalog)

      众所周知,SharePoint App是2013版本的一大特色,那么,关于App的分发有几种方式呢?SharePoint给我们提供了两种方式,一种是上载到SharePoint应用商店,另一种是在本地SharePoint环境中创建应用程序目录,为本地用户提供App的分发。

      SharePoint服务器场中可以有多个应用程序目录,每个目录针对服务器场中的一个Web 应用程序。若要为Web应用程序配置应用程序目录,只需提供要用于应用程序目录网站的网站集管理员的名称。创建应用程序目录后,网站集管理员可将 SharePoint相关应用程序上载到该目录。

    clip_image002

    (SharePoint应用程序商店和应用程序目录对比图)

      从上图中,我们可以看到SharePoint商店和应用程序目录对于本地IT的关系,SharePoint商店不是本文要介绍的,我们进入正题,介绍应用程序目录。SharePoint的应用程序目录,是部署在每个应用程序下的一个SPCatelog类型的站点,我们可以在管理中心的UI中根据向导创建,也可以使用代码创建一个SPCatelog类型的站点,用PowerShell关联应用程序,这是我们要介绍的内容。

      一开始,我们简单介绍了应用程序目录,以及和SharePoint商店的关系和对比,下面我们介绍如何创建应用程序目录。两种方式:管理中心UI和代码创建,前者就是一系列截图演示,后者才是重点。

    一、管理中心通过界面创建

      1、打开管理中心,在左侧导航选择应用程序,然后点击管理应用程序目录;

    clip_image004

      2、可以选择现有的应用程序目录网站,或者创建新的应用程序目录网站;

    clip_image006

      3、如果已存在SPAppCateLog类型的站点,输入URL地址点击确定即可完成关联;如果不是SPAppCateLog类型的站点,是不能设置为应用程序目录的,如下图报错;

    clip_image008

      4、走向导创建应用程序目录,其实就是创建一个SPAppCateLog类型的站点(SPSite),和创建网站集的过程很相似;

    clip_image010

      5、创建完毕,如下图,我们就可以通过创建的应用程序目录,上载、分发App了:

    clip_image012

      6、查看应用程序目录的网站内容,如下图:

    clip_image014

      7、若要规划应用程序目录设置,请确定以下几点:

      Ø哪些 Web 应用程序将需要应用程序目录。

      此决定与有关在 SharePoint 环境中支持 SharePoint 相关应用程序的决定是一起做出的。如果您的服务器场中对于不同的 Web 应用程序有不同类型的网站(Intranet、Extranet 和 Internet),则可以确定是否需要为这些 Web 应用程序各配置一个应用程序目录。

      Ø作为应用程序目录网站集管理员添加的人员。

      应用程序目录是 Web 应用程序中的一个网站,只能通过管理中心中的链接或使用 URL 直接访问该网站。

    二、代码创建AppCatelog,PowerShell关联

      1、其实没什么太多可说的,AppCatelog就是一个SPAppCateLog类型的站点,上面也已经介绍过了,如下代码,创建SPAppCateLog类型的SPSite;

    SPWebApplicationBuilder webappbuilder = new SPWebApplicationBuilder(SPFarm.Local);
    SPWebService webs = new SPWebService("webs", SPFarm.Local);
    SPWebApplicationCollection webappcoll = new SPWebApplicationCollection(webs);
    Guid gu = new Guid("693d5e1b-91c0-4829-888e-f67c43afbc50");
    SPWebApplication webapp = webappcoll[gu];
    SPSite site = webapp.Sites.Add("/sites/spappcatelog", "title", "description", 2052, SPWebTemplate.WebTemplate.AppCatalog.ToString(), "domain\user", "测试用户", user@domain.com);
    webapp.Update();

      Guid是我要使用的应用程序的ID,当然可以使用应用程序的名称;2052是中文的意思,如果英文应该是1033;模板类型虽然我是读取的,但是输出看了一眼,就是SPCatelog,然后就是网站的管理员,基本就这么几个参数。

    2、创建应用程序目录,PowerShell命令:

    Update-SPAppCatalogConfiguration -Site http://url -Force:$true -SkipWebTemplateChecking:$true

      PowerShell命令作用是,把改站点设置为所在应用程序的应用程序目录,所以不需要指定应用程序,即可。在SharePoint PowerShell中执行,即可。

    3、PowerShell封装的C#方法,如下:

    public bool UpdateSPAppCatalog(string siteurl)
    {
    bool myvalue = true;
        try
        {
            PowerShell ps = PowerShell.Create();
            ps.AddScript("Add-PsSnapin "Microsoft.SharePoint.PowerShell"");
            ps.AddScript("Set-ExecutionPolicy -ExecutionPolicy "Unrestricted" -Force");
            ps.AddScript("Update-SPAppCatalogConfiguration -Site " + siteurl + " -Force:$true -SkipWebTemplateChecking:$true");
            ps.Invoke<string>();
        }
        catch
        {
            myvalue = false;
        }
        return myvalue;
    }

      因为PowerShell默认执行的是Windows的PowerShell,所以需要Add-PsSnapin一下SharePoint的引用(Microsoft.SharePoint.PowerShell)才能执行SharePoint的PowerShell。

      到此为止,应用程序目录C#代码创建已经结束了!

    三、弦外之音

    画外音

      我用代码创建AppCatelog的初衷,是想封装成WebService,然后给程序调用,然后发现封装完毕WebService了,但是调用的时候没有操作PowerShell的权限,后来查了下资料,发现有人可以封装为COM+组件,但是和我的应用场景不太适合,也就没再弄下去,所以介绍到这里,希望能给需要的人,一点点帮助。

    特别感谢

      在做这段东西的时候,特别感谢CSDN论坛的天涯海角提供的思路和博客园的忘忧草提供的PowerShell脚本参考!技术在于分享,有分享、有讨论才有进步。谢谢!

    使用PowerShell脚本创建SPSite

    http://msdn.microsoft.com/zh-cn/magazine/ff607937.aspx

    App Management Service cmdlets in SharePoint 2013

    http://technet.microsoft.com/en-us/library/jj219772(office.15)

    规划 SharePoint 2013 相关应用程序

    http://technet.microsoft.com/zh-cn/library/fp161237

  • 相关阅读:
    Mysql开启日志
    amfphp传递负数的bug
    linux /var/spool/clientmqueue 目录占大量空间
    WinXP SSH连接不上虚拟机的解决方法
    批量数据替换助手V1.0版发布
    也谈反射的应用场景
    反射+特性打造简洁的AJAX调用
    文本处理之利器正则表达式闪亮登场
    关于缩略图的生成与访问策略的一些经验分享
    装饰模式个人的一些理解
  • 原文地址:https://www.cnblogs.com/jianyus/p/3570996.html
Copyright © 2011-2022 走看看