【问题标题】:How would you convert an ASP.NET site to work as a SharePoint site?如何将 ASP.NET 网站转换为 SharePoint 网站?
【发布时间】:2015-04-01 22:06:07
【问题描述】:

假设您有一个包含代码的 ASP.NET 站点。您现在需要将此网站移动到 SharePoint 环境,在该环境中,它将成为其自己的 Web 应用程序中网站集的根网站。在不完全重新工作每个页面的情况下实现这一目标的最简单方法是什么?以下是一些选项 - 可能还有其他选项:

  1. 将每个网页转换为用户控件,并将其静态嵌入到自己的页面中。
  2. 将每个网页转换为用户控件,并使用 Web 部件(例如 SmartPart)嵌入它。
  3. 将每个网页转换为用户控件,并将其放入 CONTROLTEMPLATES。
  4. 将页面放入_layouts中,作为应用程序页面处理。
  5. 将页面放入文档库并禁用所有 SharePoint 安全设置。

【问题讨论】:

    标签: sharepoint


    【解决方案1】:

    使用 SmartPart 可能是最简单的解决方案。如果您已经拥有现有站点,我看不出仅仅因为 Sharepoint 而重写所有内容的意义。如果您继续开发并使用 sharepoint 作为平台,那么您可能还想研究 SmartPart 以外的选项。

    编辑。你也可以看看this question我前段时间问过

    【讨论】:

      【解决方案2】:

      或者只是使用一个功能将它们部署到文件夹中的 SharePoint,即

      http://sharepointserver/yourapplication/default.apsx

      只要 DLL 可用(在 GAC 中,即自动完全信任,或在 Bin(编写代码访问安全策略)中),您的页面就可以工作。哎呀,您甚至可以使用 SharePoint 母版页。

      【讨论】:

      • 您不需要将信任级别设置为 WSS_Full 才能正常工作吗?
      • 取决于?如果您部署到 GAC,则 DLL 会自动获得完全信任。如果您部署到 Bin 目录,那么您将通过上述 CAS 策略确定信任级别。附言通过 web.config 将信任级别设置为完全被认为是不好的做法。
      【解决方案3】:

      这是我的做法:

      首先,您需要为 ASP.NET 站点的二进制文件提供一个单独的 DLL,否则配置所有内容是一件没完没了的事情。 最简单的方法是如果您有一个 Web 应用程序项目。如果您有一个“网站”项目,您可以按照我所做的 MSDN (http://msdn.microsoft.com/en-us/library/aa983476.aspx) 中的说明进行转换,或者还有一个 Web 部署项目加载项 (http://weblogs.asp.net/scottgu/archive/2008/01/28/vs-2008-web-deployment-project-support-released.aspx) 来获得一个DLL虽然我没有试过这个。确保为程序集命名,以便将其部署到 GAC。

      1) 使用“空白站点”模板以通常的方式创建 Web 应用程序和网站集。如果您使用的是 Forms 身份验证,则还需要将其扩展到 Windows 身份验证站点以进行下一步。

      2) 在 SharePoint Designer 中打开新网站集的根网站(不,认真)。

      3) 从菜单 File->Import->Import Site Wizard,选择 File System 并浏览到您的 Web 应用程序或网站项目,然后打开它(选中“Include Subsites”),下一步,完成。

      4) 从 SharePoint Designer 的并排导入视图中,选择您的 .aspx 和 .ascx 文件并将它们复制到您的 SharePoint 站点中(右键单击并选择“发布选择文件”)。还可以复制任何静态内容文件、图像等以及您的母版页以供参考。不要复制任何代码隐藏文件。

      5) 在 SharePoint Designer 中,修改母版页库中的默认母版页以重现您的旧 ASP.NET 母版页(但包括 minimum.master 占位符,以便它也可以与普通 SharePoint 页面一起使用)。

      6) 仍然在 SharePoint Designer 中,对于每个 .aspx 页面,使用菜单格式->母版页->附加母版页并选择默认母版页。如有必要,您还可以重新映射内容占位符。

      7) 将 ASP.NET 项目的 DLL 复制到网站根目录的 bin 文件夹(例如 C:\Inetpub\wwwroot\wss\VirtualDirectories\MySharePointWebApplication\bin)。它也可以部署到 GAC,这将允许他们在完全信任的情况下运行。如果您的应用程序依赖于其他 DLL,也请复制这些。

      8) 修改网站根目录中的 web.config,为 ASP、NET 应用程序 DLL 和您复制的任何其他 DLL 添加 SafeControl 元素,例如<SafeControl Assembly="WebApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d7bb9cf4fbfef0d6" Namespace="WebApplication1" TypeName="*" Safe="True" AllowRemoteDesigner="True" />.

      9) 为您的站点根目录添加 PageParser 异常:<PageParserPath VirtualPath="/*" CompilationMode="Auto" AllowServerSideScript="true" IncludeSubFolders="true"/>

      10) 如果您有用户控件,您还需要将目录添加到 SafeControls,例如如果您在根目录中有 .ascx 文件,请将 <SafeControl Src="~/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" /> 添加到您的 web.config。

      请注意,最后几个步骤会削弱 SharePoint 的安全模型,因此它应该只是一个临时解决方案。即使这样,您也可能需要修改一些代码隐藏以使用 SPSecurity.RunWithElevatedPrivileges 以使其在 SharePoint 应用程序的上下文中工作。如果需要更长期的解决方案,则可以将动态页面或其中的一部分作为用户控件或 Web 部件嵌入到 SharePoint 页面中。

      【讨论】:

        【解决方案4】:

        我会说这取决于您希望页面在最终用户眼中的外观以及您将来想对它们做什么。

        如果您只是需要它快速启动并运行,请尝试 Colin 的解决方案。但我不确定将应用程序放入 SharePoint 有什么意义?

        如果一致的 SharePoint 外观和感觉很重要,并且您希望随着时间的推移将页面慢慢集成到 SharePoint,那么我会将它们转换为用户控件并使用 SmartPart。然后,您将获得 SharePoint 的外部 chrome/功能,并可以使用 SharePoint 功能及时更新您的用户控件。用户控件的开发体验也比在代码中动态创建它们(传统的 Web 部件开发)更容易。

        【讨论】:

        • 可能的情况是您希望 SharePoint 网站向前发展,但您想从现有的 ASP.NET 网站开始。
        猜你喜欢
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 2020-10-08
        • 2017-12-20
        • 1970-01-01
        相关资源
        最近更新 更多