分类存档: SharePoint 发展

竹日历相互作用与 SharePoint 会导致"出现意外的错误"

今天, 我一直在使用竹的日历 web 部件进行一些改进的协作环境. 这标准的中小农场与两个负载平衡目送, 为索引的"应用程序服务器"和 InfoPath 和群集的 SQL 后端.

客户端安装一些灾难恢复软件上目送之一而导致站点集合中的特定站点的破碎 WFE. 每当负载平衡指着受影响的 WFE 和该站点, 用户看到很大程度上空白的白色的屏幕,这句话"时发生意外的错误". 没有其他信息显示, 只是这一句.

他们问我要看看它. 我很容易复制的问题,然后加 ?内容 = 1 到 URL 的末尾. 这是学会他们使用竹 web 部件. 又回到页面和现在, 突然间, 它向我展示了一个漂亮的有序错误消息:

image

我不知道发生了什么事情或所做要获取要显示其他比追加的控制的错误消息 ?内容 = 1 位的查询字符串.

这可能是非常罕见的边缘箱子,但如果您得到这消息, "时发生意外的错误"前进和添加 ?内容 = 1 到查询字符串,看看它的走向.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 标签: ,

在 Microsoft.SharePoint.dll 上使用反射器

Redgate .NET Reflector 迈克尔 · 布卢门塔尔 已经提供了 条关于通知和意见 ("哪些视图时,可以使用创建警报 ?"), 这是对自身的优点感兴趣. 不过, 甚至更乐于见到他是如何有条不紊地走通过使用红门的.NET 反射的过程. 一步一步走, 他演示如何使用该工具跟踪下来 SharePoint 如何确定是否在名单上的视图应"subscribable" 为更好的词的缺乏 (he explains this much better than I do 🙂 ).

在此点在 SharePoint 时代, 你几乎会是又聋又瞎,有没有听到或读到使用该工具. 它拥有先进的东西和我自己的感觉是,它是在很多方面最后的工具. 不过, 如果你觉得你需要它,但真的不知道如何, 迈克尔的玉好像就这一主题的伟大教程.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 标签: , ,

在日历视图中的日历项进行排序

我使用日历来跟踪上某一天的小组讨论. 我有两个会话: 上午和下午. 我想要创建一个视图,显示上午举行的会议,仅通过一个会话 ID 按字母顺序列出. 这是有点棘手,完成 (除非我错过了很明显的东西).

我可以轻松地创建筛选的视图显示只是那天的事件. 该日历将显示所有这些事件,如果他们都采取放在同一个小时, 它列出他们肩并肩在小时插槽中. 真棒. 最棘手的部分是,, 默认情况下, 它想要列出他们在 ID 格式. 所以, 如果添加"会话 02" 然后"会话 01" 到日历, 它显示他们这个顺序 (e 小节, 会议 02 然后会话 01). 要按会话 ID 顺序列出它们, 我以为,尝试这些东西:

  1. 配置使用 web 用户界面的视图. 运气不好. 没有选择以这种方式,对项目进行排序.

    因为那不工作, 我现在有希望是 CAML 查询某个地方在那里,让我重写排序. CQWP 让我做出这种改变, 也许日历,以及将?

  2. 编辑 web 部件, 找一个"出口" 函数和 … BZZZT! 我不能导出它的 XML. 没有导出选项.

    我还坚持希望可以找到,修改一些 CAML 查询. 因为我不能导出 web 部件, 这使得 SharePoint 设计器.

  3. 我将日历 web 部件添加到沙盒站点并打开该站点使用 SharePoint 设计器. 我看着 web 部件的标记,我找到自己在寻找什么. 它已编码的疯狂, 但它是有: "<ListViewXml …. >已编码的疯狂</ListViewXml>". 具体, 有此创业板:

<查询>
<在哪里>
<DateRangesOverlap>
<FieldRef 名称 ="EventDate"/>
<FieldRef 名称 ="结束日期"/>
<FieldRef 名称 ="RecurrenceID"/>
<值类型 ="日期时间">
<月 />
</价值>
</DateRangesOverlap>
</在哪里>
<OrderBy><FieldRef 名称 ="Session_x0020_ID" /></OrderBy>
</查询>

(我已经破解了 &这是;和 &gt 的和拆分出来至为清楚起见多条线路).

添加 <OrderBy> 位和它现在按会话 ID 进行排序, 不是内部列表项 ID.

硕大的提示 o’ 这顶帽子 贝基 Isserman 她到宵礼衫博客文章的评论: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. 我不会把 <OrderBy> 在正确的地方没有她的评论.

我希望把这写到更清晰的屏幕截图很快, 但我不会做的情况下, 至少我做了这么多.

</结束>

Technorati 标签: , , ,

SharePoint 功能 & 解决方案管理 — 别忘了在 CRUD U (或为此事 D)

我们一共花费了大量的时间思考的 SharePoint 解决方案 — 如何创建它们, 使用哪个工具, 当他们无法部署时,会发生什么, 计时器作业, 作用域, 等. 我们花太多时间思考很容易忘记我们需要以及收回他们的前期位. 缩回解决方案也可能是更困难, 从概念设计的角度, 比将它们部署. 部署基本上是食谱件. 通常, 安装功能, 也许有一些数据加载到列表功能接收器, 那种事. 不过, 缩回是潜在的更复杂.

给定的解决方案可能会创建这些工件:

  • 内容类型
  • 列表定义
  • 站点定义
  • 列表中的数据
  • 甚至接收机
  • InfoPath 表单

列表中亮起.

虽然很显然重要设计解决方案的正确实例化这些文物, 它是同样重要的是考虑更新和删除案例. 如果您的解决方案创建新列表,并使用填充该列表数据, 收回该解决方案时,会发生什么? 在某些情况下, 应删除列表. 在其他情况下, 应该留给历史目的不变. 您的业务要求将您引导到正确的决定.

与此帮助, 创建一个矩阵,其中列出了您的解决方案部署到 SharePoint 的每个工件. 列出每个工件的三列, 一个用于创建, 更新和删除. 每个案例, 确定该操作正确结果.

这种分析,显然最好是之前到 SharePoint 场过部署解决方案. 不过, 像吸烟, 开始做正确的事情是永远不会太迟. 创建矩阵和发展计划,以解决缺少的更新/删除场景. 它可能是一个难的问题解决, 但至少你会把解决该问题的一个框.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 标签:

快速修复: Web 服务与 SharePoint 的交互, 检查

100 万多年前, 我帮助开发了通过设计器 SharePoint 工作流的自定义操作调用的 web 服务. 这一周, 在客户端想要将它移动到生产 (最后!) 所以我们做了.

自定义操作能正常工作, 但没有它调用的 web 服务, 给我们这个错误:

System.InvalidOperationException: 可以仅由 SQL 服务器读取从配置数据库中拥有权限的用户加入到服务器场中的计算机上执行此操作. 要将此服务器连接到服务器场, 使用 SharePoint 产品和技术配置向导, 位于在管理工具中的开始菜单.
在 Microsoft.SharePoint.Administration.SPWebApplication.Lookup(Uri requestUri)

原来,我忘了添加到 SharePoint 应用程序池在 IIS 中的服务. 曾经,, 它能正常工作.

此 MSDN 论坛帖子给我我需要的线索: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</结束>

订阅我的博客.

跟着我在 twitter 上: http://twitter.com/pagalvin

Technorati 标签:

快速、 方便: 获取 SPItemList SPFolder

我一直跑到这一问题和谷歌似乎从未明白想做什么, 我想我会写这下.

我一直在做很多在最后一周或两个调试的事件接收器. 二被定义对文档库. 在文档库中的个别项目密切应用到其父文件夹. 所以, 我总是该项目的文件夹用于各种操作. 在调试时, 我需要更新文件夹为我知道其 ID 的特定项的元数据.

这里是一个小的控制台应用程序 (在服务器场中的服务器上运行而设计) 采用两个参数的: 要分配给字段的项和值的 ID, "审批状态". 它硬编码的东西很多并没有任何错误检查.

代码查找一个硬编码的站点, 获取一个硬编码的文档库,然后查找表示的项目. 它发现该项目的父文件夹中,然后赋值状态.

在这里对我来说重要的教训是 SPItem 不让您可以访问该文件夹. 您需要使用 SPListItem.File.

如果任何人在乎愿意批判或建议获取某一项的文件夹的更好方法, 请留下评论.

<代码>
使用 系统;
使用 System.Collections.Generic;
使用 System.Text;
使用 Microsoft.SharePoint;
使用 System.Collections;

命名空间 Conchango
{
    /// <摘要>
 /// </摘要>
  ManualFolderUpdate
    {
        静态 无效 主(字符串[] args)
        {
            字符串 msh = "ManualFolderUpdate (v1.0): "; // msh ="邮件头"

 控制台.WriteLine(msh + "启动.  我上次修改时间 08/8/4。");

            字符串 url = http://localhost/xyzzy;

            使用 (SPSite oSPSite = 新增功能 SPSite(url))
            {

                使用 (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    写入 文档库 = oSPWeb.Lists["文档"];

                    控制台.WriteLine(msh + "有的文档库。");

                    控制台.WriteLine(msh + "Doc lib 项目计数: [" + docLib.ItemCount + "].");

                    int 文件夹 Id = 0;
                    字符串 NewStatus = "xyzzy";

                    文件夹 Id = 系统.转换.ToInt32(args[0].ToString());
                    控制台.WriteLine("寻求项的文件夹: [" + 文件夹 Id + "].");

                    SPListItem 李 = docLib.GetItemById(文件夹 Id);

                    SPFolder thisItemFolder = 李。File.ParentFolder;

                    控制台.WriteLine(msh + "有的父文件夹。");

                    NewStatus = args[1].ToString();
                    控制台.WriteLine("状态设置为 [" + NewStatus + "].");

                    控制台.WriteLine("按回车键提交的更新或 CTRL C 中止。");

                    控制台.ReadLine();

                    thisItemFolder.Item["审批状态"] = NewStatus;
                    thisItemFolder.Item.Update();

                    控制台.WriteLine(msh + "完成更新文件夹.  退出。");

                } // 使用 SPWeb

            } // 使用 SPSite

 控制台.WriteLine(msh + "已完成。");

        } // 主

    } // 类 foldersync
} // 命名空间
</代码>

</结束>

订阅我的博客.

Technorati 标签:

隐藏在 SharePoint 中的自定义操作

几个月前, 同时为客户端使用的项目, 我创建了一个功能. 除其他外, 该功能定义自定义操作 (这些出现在站点设置下). 此自定义操作的唯一目的是要展示给我的功能激活按预期方式工作. 基本上, 我用它作为调试的原油窗体.

多到我的尴尬, 此调试项目作出它的方式,向用户验收测试和生产从 dev 才问有人在附近, "什么是此 xyzzy 链接?"

现在, 我们在生产和不想卸载功能, 修复 elements.xml,然后重新安装.

托德黯淡 指出了简单的方法来处理它. 用他的话说:

"CustomActions 不会被复制到数据库中, 他们是直接从 Elements.xml 文件读取和复制到在运行时应用程序状态. 所以, 你不需要停用, 卸载, 重新安装, 并重新激活该功能以删除 CustomAction. 只是将其从 Elements.xml 文件删除和回收应用程序池(s) 影响. 下一次的特点是在范围内, 你再也不会请参阅 CustomAction。"

跟随了他的指示和, 答案是肯定的, 他们的工作.

以我为例, 这是只是单一的 WFE 部水平安装. 如果你发现自己这一问题在将来与多个 WFE, 我相信你会要每年进行的更改.

</结束>

订阅我的博客.

Technorati 标签: ,

快速修复: 访问 SharePoint 网站将引发 [HttpException (0x 80004005): 请求超时。]

我的一个开发人员同事这周在一个项目上工作和致力于建造一些疯狂的 web 部件时遇到超时问题. 他 web 部件很好, 但"突然" 无关的网站变得非常缓慢和频繁地超时与此错误:

[HttpException (0x 80004005): 请求超时。]

我登录,看到其他几个网站都很好. 我怀疑有一些隐藏的 web 部件页上和使用 值得信赖 ?内容 = 1 调试技术, 我发现了其实 11 web 部件页上, 其中只有两个可见. 甚至更好 (从 let's-hope-I-find-something-ugly-here-that-I-can-fix 的角度), 这些已关闭的 web 部件的三个有一个名称为"错误".

我删除这些 web 部件 (它本身花了相当长的时间) 这解决了问题. For today 🙂

</结束>

订阅我的博客.

Technorati 标签:

WSS SSRS 调用 Web 服务 / 青苔在 FBA 环境

我们需要调用"CreateSubscription" 在 FBA 主办 SSRS web 服务方法管理 MOSS 环境从自定义 web 部件. 我们一直听到的变化:

  • 401: 未授权
  • 移动对象

移动的"对象" 消息是最有趣的因为那只说"对象" (我们 SSRS 服务) "搬了" 到 login.aspx. 这显然意味着我们有某种身份验证问题.

我最终意识到了 书签博客条目 由罗伯特 · 阁楼,描述了如何调用 FBA 环境内生活的一般用途 WSS/苔藓 web 服务. 请注意,我不能直接链接到这篇文章 (作为的 06/09/08) 因为它想要进行身份验证. 我提供的链接将带您到"所有职位" 视图,并可通过搜索"使用基于表单的身份验证的访问苔藓 Web 服务"来查找特定的文章.

以下是为我们工作的代码:

ReportingService2006 rs = 则为 null; 
// 进行身份验证 身份验证身份验证 = 新增功能 身份验证(); 
验证Url = "http://URL/_vti_bin/Authentication.asmx";
验证CookieContainer =
新增功能 CookieContainer();
LoginResult 结果 = 验证登录("用户 id", "密码");
如果 (结果。错误代码 = = LoginErrorCode.NoError) 
{
// 没有错误, 所以得到曲奇饼.
CookieCollection 饼干 = 验证CookieContainer.GetCookies(新增功能 Uri(验证Url));
Cookie authCookie = 饼干[结果。CookieName];
rs =
新增功能 ReportingService2006();
rs。Url =
"http://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs。CookieContainer =
新增功能 CookieContainer();
rs。CookieContainer.Add(authCookie);
}
请尝试
{
  rs。CreateSubscription(报告, extSettings, 降序, 事件类型, matchData, parameters1);
}
赶上 (Ex 异常)
{
  Console.WriteLine(前女友。Message.ToString());
}

我解释工作像这样的事情:

  • 我们的 web 部件需要拨号身份验证服务和说, "嘿,你, 托尼, 这就是我!".
  • 身份验证服务的答复说, "嘿,你, 我知道你. 孩子们如何?? 这里是一个令牌。"
  • 我们打电话给 SSRS 服务和说, "托尼寄给我, 这里是的标记。"

</结束>

订阅我的博客.

Technorati 标签: , ,

快速和简单: 提供一个 Web 站点,在 C# 中使用 SharePoint 对象模型

我试着寻找一个小代码段代码表明如何可以在站点集合中创建新的 SPWeb. 我没找到作为很快或很容易,不出所料所以我会在这个问题上耳光在一起的一个小的条目.

此代码创建一个新的 Wiki 网站:

 SPSite siteCollection;

    siteCollection = 新增功能 SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy 标题",
        "xyzzy 描述", 1033, SPWebTemplate.WebTemplateWIKI, false, false);

我最初的搜索失败,因为我一直在寻找像"提供网站使用 sharepoint 对象模型的短语" 等.

如果您 搜索 为"Webs.Add()", 你会发现一些非常有用的博客条目, MSDN 文章和关于这个问题深入的 SDK 文档. 我绝对推荐 此网站.

</结束>

订阅我的博客.

Technorati 标签: