小时? 发表于 2019-2-4 11:40:57

sharepoint force close file C#

  using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using System.IO;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Runtime.InteropServices;
  namespace CloseFile
{
   class Program
   {
      
         static void Main(string[] args)
         {
               
             Console.WriteLine("Please input the file url:");
             string weburl = Console.ReadLine();
             using (SPSite site = new SPSite(weburl))
             {
               using (SPWeb web = site.OpenWeb())
               {
                  
                     SPListItem file = web.GetListItem(weburl);
                     string status = file.File.CheckOutStatus.ToString();
                     switch (status)
                     {
                         case "None":
                              Console.WriteLine(file.Name+ " didn't open,you should edit it!");
                           break ;
                         case "ShortTerm":
                           Console.WriteLine(file.Name+ " is locked");
                           break;
                         case "LongTerm":
                           Console.WriteLine(file.Name+ " is checked out");
                           break;
                         case "LongTermOffline":
                           Console.WriteLine(file.Name+ " is checked out");
                           break;
                     }
  
                   if (status!="None")
                   {
                     Console.WriteLine("Please input '1' to unlock the file,or any key to exit.");
                     string unlock = Console.ReadLine();
                     if (unlock == "1")
                     {
  if (file.File.CheckOutStatus.ToString() == "ShortTerm")
                           {
                               try
                               {
                                 UpdateItemCheckoutExpiration(file);
                               }
                               catch (Exception ex)
                               {
                                 Console.Write(ex.Message);
                                 return;
                               }
  }
                           if (file.File.CheckOutStatus.ToString() == "LongTerm" || file.File.CheckOutStatus.ToString() == "LongTermOffline")
                           {
                               file.File.UndoCheckOut();
                               file.Update();
                           }
                     }
                     Console.WriteLine("Waiting for processing......");
                     System.Threading.Thread.Sleep(2000);
                   }
                   status = file.File.CheckOutStatus.ToString();
                   switch (status)
                   {
                     case "None":
                           Console.WriteLine(file.Name + "status is ok now!");
                           break;
                     case "ShortTerm":
                           Console.WriteLine(file.Name + " is locked");
                           break;
                     case "LongTerm":
                           Console.WriteLine(file.Name + " is checked out");
                           break;
                     case "LongTermOffline":
                           Console.WriteLine(file.Name + " is checked out");
                           break;
                   }
  Console.WriteLine("Press any key to exit.");
                  Console.ReadKey();
               }
               
             }
         }
  
         private static void UpdateItemCheckoutExpiration(SPListItem item)
         {
             SqlConnection contentDatabaseConnection = null;
             try
             {
               contentDatabaseConnection = new SqlConnection(item.Web.Site.ContentDatabase.DatabaseConnectionString);
               contentDatabaseConnection.Open();
  string UpdateCommandText = string.Format("UPDATE dbo.AllDocs SET CheckoutExpires = '{0:yyyy-MM-dd HH:mm:ss:fff}' WHERE Id = '{1}'", DateTime.Now.ToUniversalTime(), item.UniqueId.ToString());
               SqlCommand UpdateCommand = new SqlCommand(UpdateCommandText, contentDatabaseConnection);
               SqlDataAdapter contentDataAdapter = new SqlDataAdapter();
               contentDataAdapter.UpdateCommand = UpdateCommand;
               contentDataAdapter.UpdateCommand.ExecuteNonQuery();
               contentDatabaseConnection.Close();
             }
             catch (Exception)
             {
               throw;
             }
             finally
             {
               if (contentDatabaseConnection != null && contentDatabaseConnection.State != ConnectionState.Closed)
                     contentDatabaseConnection.Close();
             }
         }      

  }
}

  




页: [1]
查看完整版本: sharepoint force close file C#