在 ASP.NET 中开发 SharePoint Web 部件 [关闭]

Posted

技术标签:

【中文标题】在 ASP.NET 中开发 SharePoint Web 部件 [关闭]【英文标题】:Develop SharePoint web parts in ASP.NET [closed] 【发布时间】:2010-09-13 02:19:41 【问题描述】:

我被要求在 ASP.NET 中开发一些用户控件,这些控件稍后将作为 Web 部件被拉入 SharePoint 网站。我是 SharePoint 新手,在需要对这些部件进行原型制作期间,我无法访问 SharePoint 服务器。

有谁知道这种方法行不通的任何原因? 如果不推荐这种方法,那么其他选择是什么? 关于在考虑 SharePoint 的情况下开发 ASP.NET Web 部件时需要考虑的资源/教程的任何建议?

谢谢

编辑:2008 年 12 月 31 日 我终于标记了这个答案。我花了一段时间才意识到,尽管一开始很痛苦,但立即走 SharePoint 路线是最好的方法。免费的 VPC 映像使设置开发相对轻松。

虽然您可以像我一样在没有 SharePoint 的情况下在 ASP.NET 中开发 Web 部件,但在开发和部署 SharePoint 应用程序时,您还没有学到任何东西,只是将学习曲线推到了您思考的时间你已经完成了,(并且可能已经通知了利益相关者)。延迟 SharePoint 学习曲线对您或您的项目没有任何好处,而且您的最终产品将更适合您在此过程中获得的专业知识。

【问题讨论】:

【参考方案1】:

ASP.NET Web 部件在 SharePoint 中的工作方式与在 ASP.NET 中的工作方式相同。这就是我要采取的路线(从ASP.NET Web Part 类派生的自定义控件)。这将减轻在 SharePoint 服务器上实际开发的任何要求。

您将遇到的唯一问题是您将无法利用 SharePoint 框架。如果您在 SharePoint 中进行任何高级操作,这很重要。但是,SharePoint 是 ASP.NET 加上一些附加功能,因此您可以使用 System.Web.UI.WebControls.WebPart 类开发的任何东西都应该在 SharePoint 中运行良好。

一些有助于减轻您从纯 ASP.NET 到 SharePoint 的痛苦的注意事项:

如果您可以将所有内容都放在一个程序集中,部署会更容易 尝试将您需要的所有内容放入部署到 SharePoint 的 DLL 中 根据需要使用汇编资源嵌入 JS、CSS 和图像文件 您正在构建的程序集的强名称 大多数 SharePoint 部署最终都在 GAC 中,并且需要一个强名称

这是一篇相关的博文; Developing Basic Web Parts in SharePoint 2007

【讨论】:

【参考方案2】:

如果是非常短期的事情,微软有一个限时的WSS评估VPC镜像:

WSS3 SP1 Developer Evaluation VPC image

如果您现在没有时间/资源来设置自己的 VPC 映像,这将帮助您开始。

【讨论】:

我终于把它标记为答案。事实证明,这确实是长期甚至中期运行中的最佳路线。【参考方案3】:

我想最简单的方法是使用 CodePlex 的SmartPart for SharePoint。项目描述说“可以托管任何 ASP.NET Web 用户控件的 SharePoint Web 部件。无需编写代码即可创建您的 Web 部件!”,我想这正是您想要做的。

【讨论】:

我当然不会对写代码过敏,只是需要快速转身。感谢您的提示 我还可以推荐 SmartPart 工具包。我已经在很多 WSS 项目中成功使用过。 我也使用过 SmartPart ... 效果很好!【参考方案4】:

设置我的机器以开发 Sharepoint 花了我几天时间。

见http://weblogs.asp.net/erobillard/archive/2007/02/23/build-a-sharepoint-development-machine.aspx

【讨论】:

这,我认为这将是最好的长期方法,但是这两天是我交付第一个原型的完整时间。我将保存此链接,以便下周循环播放。谢谢【参考方案5】:

像构建典型的 .net 网站一样构建和测试控件。 解决方案 1 = 控件 解决方案 2 = 托管控件的虚拟网站。

在 Sharepoint 上部署:

您需要对控件进行签名。

将签名的 DLL 放入共享点服务器上的 GAC(Windows/程序集)

在共享点站点的虚拟服务器根 web.config 中将控件标记为安全。

<SafeControl Assembly="MyControl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=975cc42deafbee31" Namespace="MyNamespace" TypeName="*" Safe="True" AllowRemoteDesigner="True" />

在您的共享点页面中注册组件:

<%@ Register Namespace="MyNamespace" Assembly="MyControl, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=975cc42deafbee31" TagPrefix="XXXX" %>

使用控件:

<XXXX:ClassName runat="server" Field1="Value1" Field2="Value2" ....></XXXX:Classname>

如果需要更换同版本号的控件,则需要回收应用池重新加载。

【讨论】:

【参考方案6】:

如果您不需要执行任何特定于 SharePoint 的操作(即访问列表、其他 Web 部件等),那么您可以像构建常规 Web 部件一样构建您的 Web 部件(源自 System.Web.UI.WebControls.WebParts.WebPart类),它会在添加到 SharePoint 网站时工作。

【讨论】:

【参考方案7】:

您需要访问共享点服务器,因为没有它您无法模拟您的 Web 部件,您必须将其部署到您的共享点站点以测试它是否正常工作。调试也会很痛苦。或者您可以使用 SmartPart,它是一个 Web 部件,其作用类似于您的用户控件在共享点站点中显示的包装器。

【讨论】:

【参考方案8】:

您不需要 SharePoint 来开发 WebPart。您可以通过从 System.Web.UI.WebControls.WebParts 继承来开发 Web 部件。这是创建 Web 部件的首选方式,除非您想要以下功能,例如

* Connections between web parts that are outside of a Web Part zone

* Cross page connections

* A data caching infrastructure that allows caching to the content database

* Client-side connections (Web Part Page Services Component)

在这种情况下,您需要通过从 Microsoft.SharePoint.WebPartpages.WebPart 继承来开发 webpart。你可以找到更多有用的信息here

【讨论】:

【参考方案9】:

您的用户控件必须部署为 Web 部件是否有任何特殊原因?通过 12 hive 中的 CONTROLTEMPLATES 文件夹或 Web 应用程序虚拟目录中的某个位置直接将用户控件部署到 Sharepoint 站点是完全可行的,然后您可以使用 Sharepoint Designer 从网页中引用该位置。

但是,如果 Web 部件要求至关重要,那么我推荐 Smartpart for Sharepoint,如前所述。

【讨论】:

【参考方案10】:

实际上,由于 Web 部件的“滥用”性质,应始终将其部署到共享点的 bin 文件夹。如果可能,请始终将 Web 部件部署到 bin,并编写自己的 CAS 并将其包含在清单中。

【讨论】:

以上是关于在 ASP.NET 中开发 SharePoint Web 部件 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 ASP.NET 将网站添加到 SharePoint Online 失败

开发要导入到 SharePoint MOSS 2007 的 ASP.Net 用户控件

将 Asp.Net UserControl 用作 SharePoint WebPart

在 SharePoint Web 应用程序和 ASP.NET Web 应用程序之间传递用户凭据

如何在 asp.net 4.5 中使用 facebook 帐户开发登录

Sharepoint:Web 部件与 ASP.NET 用户控制