最近很朋友都在问这个问题。
通过外部asp.net web 应用程序测试SharePoint 2010 的API比较便捷和快速,相信很多人都碰到这个问题。运行环境是Windows Server 2008 x64位+SP2补丁,SQL Server 2008 x64+SP2补丁,Visual Studio 2010 x86,SharePoint Designr 2010 x86。
编译的时候会出现如下问题:
“找不到位于xxx的Web 应用程序。请确认正确键入了此 URL。如果此 URL 需要提供现有内容,则系统管理员可能需要添加到指定应用程序的新请求 URL 映射。”
引起错误的代码是没法实例化一个SPSite。
经过各种尝试测试,最终解决办法如下:
1,在 IIS7中新建一个网站HostTest,端口任意,比如20001,路径指向已经创建的asp.net web 应用程序项目的根目录
然后把网站HostTest的.NET编译中调试设置为true
然后右键HostTest->编辑权限,添加everyone用户
然后把HostTest的应用程序池设置为任意一个SharePoint 2010网站的应用程序池
2,在VS2010里面,右击asp.net web app项目->属性->分别在应用程序标签和生成标签下修改为.NET3.5框架+编译时使用X64位
右击asp.net web app项目->属性->Web->在服务器区域,选择“使用自定义Web服务器”,然后输入http://localhost:20001或http://主机名:20001
然后把网站HostTest的.NET编译中调试设置为true
然后右键HostTest->编辑权限,添加everyone用户
然后把HostTest的应用程序池设置为任意一个SharePoint 2010网站的应用程序池
2,在VS2010里面,右击asp.net web app项目->属性->分别在应用程序标签和生成标签下修改为.NET3.5框架+编译时使用X64位
右击asp.net web app项目->属性->Web->在服务器区域,选择“使用自定义Web服务器”,然后输入http://localhost:20001或http://主机名:20001
3,测试API的代码必须使用SPSecurity.RunWithElevatedPrivileges(delegate()
{
});
包括起来。
{
});
包括起来。
这个问题是因为X64位系统引起的,同时SharePoint 2010的运行模式和普通的asp.net Web应用程序模式不同。
本文转自terryli51CTO博客,原文链接:http://blog.51cto.com/terryli/589130 ,如需转载请自行联系原作者