我创建了一个以32位模式运行的批处理作业,因为它使用32位COM目标,这需要连接到SharePoint以进行列表更新.它在我的开发环境中工作,因为它是完整的32位.但在我的测试和制作环境中,我们使用的是64位SharePoint,这是我从SPSite获得的:
System.IO.FileNotFoundException: The Web application at http:/// could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application. at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri req...
这就是我做的
using (SPSite site = new SPSite(_url)) { using (SPWeb web = site.OpenWeb()) { try { SPList list = web.Lists[new Guid(_listID)]; SPListItem item = list.GetItemById(id); item[field] = value; item.SystemUpdate(false); } catch (Exception x) { log.Error(x); } } }
Lars Fastrup.. 6
您只需要在64位进程中运行批处理作业.问题是SharePoint在您的测试和生产环境中有许多COM对象,这些对象在64位编译.SPSite和SPWeb对象实际上包装了COM对象,这就是它们在32位进程中失败的原因.
一种解决方法是通过其Web服务而不是对象模型与SharePoint进行交互.
您只需要在64位进程中运行批处理作业.问题是SharePoint在您的测试和生产环境中有许多COM对象,这些对象在64位编译.SPSite和SPWeb对象实际上包装了COM对象,这就是它们在32位进程中失败的原因.
一种解决方法是通过其Web服务而不是对象模型与SharePoint进行交互.