将 ASP.NET 网站转换为 SharePoint 网站






4.81/5 (29投票s)
本文将介绍如何使用 SharePoint 网站的相同外观和感觉,将现有的 ASP.NET 应用程序转换为 SharePoint 网站。
引言
许多 ASP.NET Web 开发人员正在转向 SharePoint 网站创建。本文将详细解释在 Visual Studio 中开发的 ASP.NET 网页如何转换为 SharePoint 网站。如果需要一个在 Visual Studio 中创建的网站,以传统方式使用 code-behind 逻辑和其他层(如数据访问和业务逻辑),并将其转换为 SharePoint 网站,同时使其以相同的方式使用相同的 code-behind 运行,那么您来对地方了。本文就是讲这个的。
场景
有一个 ASP.NET 网站解决方案,包含三个层:Code-Behind 层、业务逻辑层和数据访问层。网站在所有这些层中都实现了功能。业务逻辑层和数据访问层位于不同的类库项目中。我们需要将这个网站转换为 SharePoint 网站。此外,我们希望使用 SharePoint 网站的相同外观和感觉。因此,我们需要使用 SharePoint 母版页,而不是我们现有的母版页(我们也可以使用自己的母版页;只需要添加一些 SharePoint 功能所需的默认占位符)。在本文中,我们将处理一个具有与 SharePoint 网站相同外观和感觉的网站。
步骤概述
本文介绍了三个步骤,将帮助您将 ASP.NET Web 应用程序转换为 SharePoint 网站。
步骤 1:为您的网站解决方案添加一个 Web 部署项目,该项目将为网站创建一个单一的 DLL。此步骤将为网站提供 code-behind DLL 和其他依赖项 DLL。
步骤 2:将 SharePoint 网站的 *bin* 文件夹中的项目(DLL)复制到 SharePoint 网站,并调整 SharePoint 网站的 Web 配置文件以使用复制的 DLL。
步骤 3:在 SharePoint Designer 中打开您创建的 SharePoint 网站,并从我们的 Web 应用程序导入网页,然后将其链接到相应的 DLL。
步骤 1:为您的网站解决方案添加一个 Web 部署项目,该项目将为网站创建一个单一的 DLL
- 第一步是确保您已添加适当的命名空间,并在转到步骤 2 之前避免了命名空间内的类名重复。
- 向您的网站解决方案添加一个 Web 部署项目。可以通过右键单击网站项目并选择“添加 Web 部署项目”选项来完成。
- 为解决方案添加一个强名称密钥,我们将使用它来签名所有 DLL。
- 现在,我们需要设置部署项目属性。右键单击部署项目并单击“属性页”。
- 转到“输出程序集”选项卡,选择“将所有程序集合并到单个程序集”选项(这是默认选项),并提供程序集名称。
- 接下来,转到“签名”选项卡,选择“启用强命名”选项,然后选择您在步骤 3 中创建的强名称密钥。
- 同时勾选“用 AllowPartiallyTrustedCallersAttribute (APTCA) 标记程序集”选项。这将使 DLL 部分受信任,从而 SharePoint 网站可以使用它们。单击“确定”。
- 数据访问、业务逻辑或 Web 应用程序的任何其他依赖项程序集都必须使用强名称密钥进行强命名。
- 此外,我们还需要允许依赖项 DLL 的部分信任调用者。这可以通过打开类库项目的 *Assembly.info* 文件并在其中添加如下代码行来完成。
- 以 Release 模式(任何模式)构建部署项目。
- 转到部署项目放置输出的路径。在此,*bin* 目录中,您将找到 Web 部署 DLL 文件。如果存在任何依赖项目,如业务层和数据访问层,这些 DLL 也会被复制到此 *bin* 文件夹中。
注意:安装 Web 部署设置后,此选项将可用。
[assembly: System.Security.AllowPartiallyTrustedCallers]
现在,我们有了可以在 SharePoint 网站中使用以实现与我们的 ASP.NET 网站相同功能的 DLL。
步骤 2:将 bin 文件夹中的项目(DLL)复制到 SharePoint 网站,并调整 SharePoint 网站的 Web 配置文件以使用复制的 DLL
我们 SharePoint 网站创建的下一步是将上面过程中创建的 DLL 链接到我们已有的空白 SharePoint 网站。我们的 SharePoint 网站的 *web.config* 文件(默认位于 *C:\Inetpub\wwwroot\wss\VirtualDirectories\<PortNo>*)也需要进行一些更改。以下是需要执行的步骤:
- 将 ASP.NET 部署文件夹中的 *bin* 文件夹内容复制到 SharePoint 网站的 *bin* 文件夹中(通常位于 *C:\Inetpub\wwwroot\wss\VirtualDirectories\<PortNo>\bin*)。
- 打开 SharePoint 网站的 *web.config* 文件。
- 在 `<PageParserPath>` 部分下添加以下行:
- 将将在 SharePoint 网站(code-behind 代码的 Web 部署 DLL、业务层和数据访问 DLL)中使用的程序集注册为 SafeControl。为此,在 `<SafeControls>` 部分下添加以下内容:
- 同时添加您的网站将使用的所有其他依赖项 DLL。请注意,所有这些 DLL 都必须是强命名的,并标记为 `AllowPartiallyTrusted`。
- 通过将 `<trust>` 部分的 `level` 属性从 '
WSS_Minimal
' 更改为 'WSS_Medium
',将信任级别从 Minimal 更改为 Medium。
<PageParserPath VirtualPath="/*" CompilationMode="Always"
AllowServerSideScript="true" IncludeSubFolders="true" />
<SafeControl Assembly="SampleWebSiteAssembly"
Namespace="SampleSiteNamespace" TypeName="*" Safe="True" />
注意:您还可以执行以下操作,以便在 SharePoint 网站屏幕上显示原始错误,以便于错误识别。您需要将 `<customErrors>` 部分的 `mode` 属性更改为 `Off`。另外,将 `<SafeMode>` 部分的 `CallStack` 属性更改为 True
。
步骤 3:在 SharePoint Designer 中打开您创建的 SharePoint 网站,并从我们的 Web 应用程序导入网页
假设我们的 SharePoint 网站左侧导航面板中有一个链接,单击该链接后,您希望在 SharePoint 网站的内容占位符中显示您的一个 ASP.NET 页面。这就是我们要做的事情:
- 在 SharePoint Designer 中打开您的 SharePoint 网站(在本文中,我们使用 SharePoint Designer 2007)。
- 单击“文件”-->“导入”-->“文件”。这将打开“导入”对话框。
- 单击“添加文件”,然后从本地文件夹中选择您创建的 ASPX 页面。请注意,您必须从部署文件夹中获取 ASPX 文件,而不是项目中的 ASPX 页面。单击“确定”。这将把页面导入到您的 SharePoint 网站中。
- 现在,双击新导入的页面。在窗格中间(窗格左下角)的“设计/拆分/代码”选项中单击“拆分”选项。
- 执行此操作后,您将在设计器窗口中看到一个错误,提示:无法加载母版页文件。这是因为我们在项目中使用的母版文件与 SharePoint 网站使用的母版页不同。您可以导入母版页,也可以使用 SharePoint 的默认母版页。在本文中,我们将使用 SharePoint 的默认母版页。
- 将网页的 `Page` 指令中的 '
MasterPageFile
' 属性更改为与 SharePoint 网站中的 *default.aspx* 相同的值,即 *~masterurl/default.master*。 - 从 `Page` 指令中删除 '
CodeFile
' 属性,因为这仅用于 Visual Studio。 - 现在,将 ASP.NET 页面中的占位符的 `ContentPlaceHolderID` 更改为相关的 SharePoint 网站占位符。例如,ASP.NET 页面的主内容占位符的 `ContenPlaceHolderID` 必须更改为 '
PlaceHolderMain
'。 - 将 ASP.NET 页面的占位符映射到 SharePoint 母版页的占位符后,页面将在设计视图中以默认母版页呈现。
- 现在,我们需要更改 `Inherits` 属性以添加程序集名称。例如,如果命名空间是 '
SampleSiteNamespace
',页面使用的 code-behind 程序集名称是 *SampleWebSiteAssembly*,那么我们将设置 `Inherits="SampleSiteNamespace.SampleWebSiteAssembly"`,并且此程序集必须位于如上文步骤 2 中添加的 SharePoint 网站的 *bin* 文件夹中。
现在,我们已经将 ASP.NET 网站转换成了 SharePoint 网站,准备好运行,并具有与 SharePoint 网站相同的外观和感觉。