我试图上传从infopath 2010表单生成的xml文档到文档库。代码如下
所示using (SPSite site = new SPSite(this.Context.Request.Url.AbsoluteUri))
{
sb.AppendLine("site URL : " + site.Url);
SPWeb web = site.RootWeb;
//SPWeb web = SPContext.Current.Site.RootWeb;
sb.AppendLine("Web URL : " + web.Url);
SPDocumentLibrary docLib = web.Lists["Supplier Requests Library"] as SPDocumentLibrary;
string destUrl = docLib.RootFolder.Url + "/" + countryName + "/" + supplierCategory + "/" + supplierNumber + " " + supplierName + ".xml";
sb.AppendLine("destination URL : " + destUrl);
web.AllowUnsafeUpdates = true;
SPFile destFile = docLib.RootFolder.Files.Add(destUrl.Trim(), document, true,"",false);
destFile.Update();
docLib.Update();
web.AllowUnsafeUpdates = false;
sb.AppendLine("document uploaded successfully");
}
我得到表单提交失败的错误,但当我检查库我有我的xml文档上传成功。错误是:
System.Threading.ThreadAbortException: Thread was being aborted.
at System.Threading.Thread.AbortInternal()
at System.Threading.Thread.Abort(Object stateInfo)
at System.Web.HttpResponse.End()
at Microsoft.SharePoint.Utilities.SPUtilityInternal.SendResponse(HttpContext context, Int32 code, String strBody)
at Microsoft.SharePoint.Utilities.SPUtility.HandleAccessDenied(HttpContext context)
at Microsoft.SharePoint.Utilities.SPUtility.HandleAccessDenied(Exception ex)
at Microsoft.SharePoint.Library.SPRequest.SetListProps(String bstrUrl, String bstrListName, Boolean bMigrate)
at Microsoft.SharePoint.SPList.Update(Boolean bFromMigration)
at SupplierWebService.SubmitFormData(Byte[] document)
System.Threading.ThreadAbortException: Thread was being aborted.
at SupplierWebService.SubmitFormData(Byte[] document)
at SupplierWebService.SubmitFromData(XmlDocument document)
我用提升的权限运行代码来克服这个错误,并且成功了,但是现在created by字段显示了创建的每个文档的系统帐户,并且我无法过滤数据以生成一个视图来显示当前登录用户创建的文档。
请建议一些解决这个问题的方法。提前感谢!
不调用doclib.Update()
。您没有更改任何列表元数据,您正在添加数据。
还有,你为什么要打开不安全的更新?
这种情况通常发生在重定向时。你能检查一下是不是这样吗?示例线程,如果它提供任何指针。