使用 C# 删除 SharePoint 文件夹中的文件

kat*_*404 2 c# rest asp.net-mvc sharepoint

我正在使用 SharePoint ExcelService 来操作 Excel 文件,然后使用

ExcelService.SaveWorkbookCopy()
Run Code Online (Sandbox Code Playgroud)


现在我想删除我之前保存的那些文件。在 Asp.Net MVC 应用程序中使用 C# 实现这一目标的最佳方法是什么?

我使用 REST 服务尝试过它,但我真的找不到任何教程,而且正如现在的代码一样,我收到一个 WebException “远程服务器返回错误:(403) Forbidden。” 我为我的 REST URL 尝试了两个版本,但都不起作用。

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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Rys*_*ski 7

使用 nuget 包Microsoft.SharePointOnline.CSOM

using (var sp = new ClientContext("webUrl"))
{
    sp.Credentials =  System.Net.CredentialCache.DefaultCredentials;
    sp.Web.GetFileByServerRelativeUrl(filePath).DeleteObject();
    sp.ExecuteQuery();
}
Run Code Online (Sandbox Code Playgroud)

这将确保文件被删除 - 如果您想确保文件在删除过程中存在:

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();
}
Run Code Online (Sandbox Code Playgroud)