这是我的做法:
首先,您需要为 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 页面中。