I tried to download previous version files of SharePoint using c#. I have used This article as reference. The link is working file with chrome. Now when I tried the URL on c# to download the file part by part, it is giving me The remote server returned an error: (401) Unauthorized. error.
I have even provided access token using to header of the function.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
WebHeaderCollection header = new WebHeaderCollection();
request.Headers.Add(System.Net.HttpRequestHeader.Authorization, $"Bearer {token}");
request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
Here, uri is similar to the address: http://yoursite/yoursubsite/_vti_history/512/Documents/Book1.xlsx
How can I download the previous version file using c#?
Here is my test code for your reference.
var login = "user@xxx.onmicrosoft.com";
var password = "Password";
var securePassword = new SecureString();
foreach (char c in password)
{
securePassword.AppendChar(c);
}
SharePointOnlineCredentials onlineCredentials = new SharePointOnlineCredentials(login, securePassword);
string webUrl = "https://xxx.sharepoint.com/sites/lee";
string requestUrl = "https://xxx.sharepoint.com/sites/lee/_vti_history/512/MyDoc2/testdata.xlsx";
Uri uri = new Uri(requestUrl);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "GET";
request.Credentials = onlineCredentials;
request.Headers[HttpRequestHeader.Cookie] = onlineCredentials.GetAuthenticationCookie(new Uri(webUrl), true); // SPO requires cookie authentication
request.Headers["X-FORMS_BASED_AUTH_ACCEPTED"] = "f"; // disable interactive forms-based auth
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();