使用Sharepoint Server对象模型测试Sharepoint解决方案
我需要测试我的企业创建的sharepoint解决方案。我已经创建了一个简单的exe,可以在实际的sharepoint服务器上运行 我正在尝试找出如何使用Sharepoint Server OM进行测试。在这一点上,我所要做的只是向库中添加一个项 我的第一个解决方案是这样的:使用Sharepoint Server对象模型测试Sharepoint解决方案,sharepoint,Sharepoint,我需要测试我的企业创建的sharepoint解决方案。我已经创建了一个简单的exe,可以在实际的sharepoint服务器上运行 我正在尝试找出如何使用Sharepoint Server OM进行测试。在这一点上,我所要做的只是向库中添加一个项 我的第一个解决方案是这样的: SPSite site = SPContext.Current.Site; SPWeb web = site.OpenWeb(); etc... SPSite site = new SPSite(url); SPWeb w
SPSite site = SPContext.Current.Site;
SPWeb web = site.OpenWeb();
etc...
SPSite site = new SPSite(url);
SPWeb web = site.OpenWeb();
SPList list = web.Lists[listName];
SPListItem item = list.AddItem();
item["Title"] = "Some Title";
item.Update();
这里的问题是SPCOntext.Current.Site始终为空
我的下一次尝试是这样的:
SPSite site = SPContext.Current.Site;
SPWeb web = site.OpenWeb();
etc...
SPSite site = new SPSite(url);
SPWeb web = site.OpenWeb();
SPList list = web.Lists[listName];
SPListItem item = list.AddItem();
item["Title"] = "Some Title";
item.Update();
这运行时没有任何错误,但是当我检查有问题的列表时,我添加的项目不在那里
有人能帮我指出哪里出了问题吗?试试下面的代码:
using(SPSite site = new SPSite(url))
using(SPWeb web = site.OpenWeb())
{
SPList list = web.Lists[listName];
SPListItem item = list.AddItem();
item["Title"] = "Some Title";
web.AllowUnsafeUpdates = true;
item.Update();
list.Update();
web.AllowUnsafeUpdates = false;
}
您可能不需要AllowUnsafeUpdates(现在不记得了),但我几乎肯定您也必须更新列表。非常有效。非常感谢!我确实需要包括AllowUnsafeUpdate。原因是什么?我是否可以以某种方式将用户名和pwd附加到它以避免出现这种情况?必须考虑这样一个事实,即您调用构造函数而不是从SPContext获取对象。顺便说一句,SPContext为null,因为您在HTTP请求的上下文之外使用它。SPContext是HTTPContext的SharePoint版本。此外,我还更新了我的原始代码块,以包括使用语句来确保正确的对象处理。AllowUnsafeUpdates允许您在HTTP请求的上下文中更新未经过表单摘要检查的内容。例如,在web部件的显示上,而不是在回复时。对于没有HTTP上下文的控制台类型应用程序,您不需要它(这与SPContext无法工作的原因相同)。Ryan你读过那篇文章吗?甚至那篇文章也指出,在创建自己的版本时,您可能需要允许WunsafeUpdates。是的,它应该为null,但在实例化对象时并不总是这样。我回去看了一些旧代码,不管它是不是一个bug,如果没有AllowUnsafeUpdates,它有时是不会工作的。