C# 使用C删除SharePoint文件夹中的文件#
我正在使用SharePoint excel Service操作excel文件,然后使用将其保存到共享文档文件夹C# 使用C删除SharePoint文件夹中的文件#,c#,asp.net-mvc,rest,sharepoint,C#,Asp.net Mvc,Rest,Sharepoint,我正在使用SharePoint excel Service操作excel文件,然后使用将其保存到共享文档文件夹 ExcelService.SaveWorkbookCopy() 现在我想删除我先前保存的那些文件。在Asp.NETMVC应用程序中使用C实现这一点的最佳方法是什么 我使用REST服务进行了尝试,但是我找不到任何教程,因为代码是现在的,我得到了一个WebException“远程服务器返回了一个错误:(403)禁止” 我为我的RESTURL尝试了两个版本,都不起作用 var fileS
ExcelService.SaveWorkbookCopy()
现在我想删除我先前保存的那些文件。在Asp.NETMVC应用程序中使用C实现这一点的最佳方法是什么 我使用REST服务进行了尝试,但是我找不到任何教程,因为代码是现在的,我得到了一个WebException“远程服务器返回了一个错误:(403)禁止” 我为我的RESTURL尝试了两个版本,都不起作用
var fileSavePath = "http://sharepointserver/Collaboration/workrooms/MyWebSiteName/Shared%20Documents/";
var excelRestPath_1 = "http://sharepointserver/Collaboration/workrooms/MyWebSiteName/_api/web/";
var excelRestPath_2 = "http://sharepointserver/_api/web/";
public static bool DeleteExcelFromSharepoint(int id, string excelRestPath)
{
try
{
string filePath = "/Shared%20Documents/" + id + ".xlsm";
string url = excelRestPath + "GetFileByServerRelativeUrl('" + filePath + "')";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "DELETE";
request.Headers.Add(HttpRequestHeader.IfMatch, "*");
request.Headers.Add("X-HTTP-Method", "DELETE");
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
using (var response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
throw new ApplicationException(String.Format("DELETE failed. Received HTTP {0}", response.StatusCode));
}
return true;
}
}
catch (Exception ex)
{
CustomLogger.Error("Error deleting Excel from Sharepoint", ex);
return false;
}
}
使用nuget package
Microsoft.SharePointOnline.CSOM
:
using (var sp = new ClientContext("webUrl"))
{
sp.Credentials = System.Net.CredentialCache.DefaultCredentials;
sp.Web.GetFileByServerRelativeUrl(filePath).DeleteObject();
sp.ExecuteQuery();
}
这将确保文件被删除-如果要确保文件在删除过程中存在:
using (var sp = new ClientContext("webUrl"))
{
sp.Credentials = System.Net.CredentialCache.DefaultCredentials;
var file = sp.Web.GetFileByServerRelativeUrl(filePath);
sp.Load(file, f => f.Exists);
file.DeleteObject();
sp.ExecuteQuery();
if (!file.Exists)
throw new System.IO.FileNotFoundException();
}
如果您使用的是REST,可以参考链接 () 我的示例代码是:
string resourceUrl = "https://<BaseURL>/sites/<SubSite>/_api/web/GetFileByServerRelativeUrl('/sites/<SubSite>/Documents/New Folder/xyz.docx')";
var wreq = WebRequest.Create(resourceUrl) as HttpWebRequest;
wreq.Headers.Remove("X-FORMS_BASED_AUTH_ACCEPTED");
wreq.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
wreq.Headers.Add("X-HTTP-Method", "DELETE");
//wreq.Headers.Add("Authorization", "Bearer " + AccessToken);
wreq.UseDefaultCredentials = true;
wreq.Method = "POST";
wreq.Accept = "application/json; odata=verbose";
wreq.Timeout = 1000000;
wreq.AllowWriteStreamBuffering = true;
wreq.ContentLength = 0;
string result = string.Empty;
string JsonResult = string.Empty;
try
{
WebResponse wresp = wreq.GetResponse();}
catch (Exception ex)
{
LogError(ex);
result = ex.Message;
}
string resourceUrl=”https:///sites//_api/web/GetFileByServerRelativeUrl('/sites//Documents/New Folder/xyz.docx')”;
var wreq=WebRequest.Create(resourceUrl)作为HttpWebRequest;
wreq.Headers.Remove(“基于X-FORMS的验证已接受”);
wreq.Headers.Add(“X-FORMS_-BASED_-AUTH_-ACCEPTED”,“f”);
wreq.Headers.Add(“X-HTTP-Method”,“DELETE”);
//wreq.Headers.Add(“授权”、“承载人”+访问令牌);
wreq.UseDefaultCredentials=true;
wreq.Method=“POST”;
wreq.Accept=“application/json;odata=verbose”;
wreq.Timeout=1000000;
wreq.AllowWriteStreamBuffering=true;
wreq.ContentLength=0;
字符串结果=string.Empty;
string JsonResult=string.Empty;
尝试
{
WebResponse wresp=wreq.GetResponse();}
捕获(例外情况除外)
{
对数误差(ex);
结果=例如消息;
}
尝试了上面的答案,但仍然没有删除文件,我发现这个方法非常有效
var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(“FullSharePointURIofDocument“);
request.Timeout = System.Threading.Timeout.Infinite;
request.Credentials = new
System.Net.NetworkCredential(“SharePointUser“,”SharePointUserPassword“);
request.Method = “DELETE“;
var response = (System.Net.HttpWebResponse)request.GetResponse();
谢谢谢谢,看起来很棒。虽然我创建了这些文件,但我还是尝试了它,并得到了一个UnauthorizedAccessException。我是否必须激活SharePoint上的某些特殊功能才能删除文件?在这种情况下,使用默认凭据通常不起作用,您可能需要使用Microsoft.SharePoint.Client.SharePointOnlineCredentials或System.Net.NetworkCredential。如果需要传递用户权限,请使用OAuth.Good add,方法是指定必须将站点和子站点添加到relativeURL。我花了一点时间才找到。以下是另一个供参考的链接: