Jump to content

Κλειδωμένα αρχεία στο SharePoint


Zinon
 Share

Recommended Posts

Γεια σας,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Έχουμε ένα πρόβλημα στο SharePoint και χρειαζόμαστε κάποια βοήθεια εάν κάποιος από εσάς το έχετε ξανά συναντήσει. Έχουμε ένα MOSS 2007 που το χρησιμοποιούμε κατά κάποιο τρόπο και σαν file server, κυρίως Excel αρχεία.

Το θέμα είναι όταν έχει ένας χρήστης ανοιχτό ένα xls αρχείο και κρασάρει το Excel, και πάει μετά να το ξανά ανοίξει, του το βγάζει σαν read-only και κλειδωμένο από τον ίδιο.

Η επίσημη απάντηση από την Microsoft  είναι αυτή http://support.microsoft.com/kb/899709, που λέει να περιμένουμε 10 λεπτά να κάνει timeout και να ξεκλειδωθεί το αρχείο. Όμως έχουμε πολλές περιπτώσεις που το αρχείο τελικά δεν ανοίγει. Ούτε μετά το 10λεπτο που αναφέρει η Microsoft αλλά ούτε και ποτέ. Ήμαστε αναγκασμένοι να κάνουμε Save As το αρχείο και να διαγράψουμε το παλιό ώστε να μπορέσει να χρησιμοποιηθεί ξανά.

Αν όμως μετά το Save As γίνει rename στο αρχείο με το παλιό του όνομα, τότε το εμφανίζει πάλι κλειδωμένο από τον ίδιο χρήστη.

Έχουμε παρατηρήσει επίσης ότι σε μερικές των περιπτώσεων το αρχείο ανοίγει μόνο αν γυρίσουμε το View μέσα από το SharePoint σε Explorer View από το default που χρησιμοποιούμε (All Documents).

Έγινε δοκιμή ξεκλειδώματος των αρχείων και με κώδικα με C # .net αλλά δεν είχε αποτέλεσμα.

 

Κάθε βοήθεια –ιδέα ευπρόσδεκτη.

Link to comment
Share on other sites

Ένας τρόπος να παρακάμψεις το πρόβλημα είναι να ενεργοποιήσεις το αυτόματο checkout. Σε αυτή την περίπτωση το Sharepoint δεν κλειδώνει το αρχείο πριν το ανοίξει. Αυτό ρυθμίζεται στα settngs κάθε βιβλιοθήκης, μέσω του General Settings > Versioning Settings > Require documents to be checked out before they can be edited. Φυσικά, οι χρήστες θα πρέπει να θυμούνται να κάνουν checking το κείμενο όταν τελειώσουν τις αλλαγές.

Υπάρχει και μία πιθανότητα να σε βοηθήσει το τελευταίο February Cumulative Update, ή το Service Pack 2 το οποίο βγαίνει την Τρίτη 28 Απριλίου. Παρότι δεν αναφέρεται πουθενά ότι διορθώνεται το συγκεκριμένο πρόβλημα, και δεν αναφέρεται πουθενά και τίποτε για το SP 2 (ούτε καν Public Beta δεν έκαναν!), το February CU διορθώνει αρκετα resource leaks στα timer jobs. Ίσως, τα ξεχασμένα locks να οφείλονται σε ένα resource leak.

Όπως και να έχει, είναι καλό να βάζεις πάντα τα CU και φυσικά τα Service Packs, γιατί διορθώνουν πολλά θέματα τα οποία αν δεν σε έχουν επηρεάσει ακόμα, σίγουρα θα σε επηρεάσουν κάποια στιγμή.

Τέλος, όταν λες ότι δοκίμασες να ξεκλειδώσεις τα αρχεία με κώδικα, τί εννοείς? Ποιές κλήσεις χρησιμοποίησες?

Link to comment
Share on other sites

Δεν θέλαμε να ενεργοποιήσουμε το document check-out γιατί όταν ένα αρχείο είναι checked-out, οι χρήστες δεν βλέπουν το αρχείο στα Document Libraries τους – το βλέπουν ξανά όταν γίνει check-in. Αλλά θα το δοκιμάσω να δω εάν μας λύνει το θέμα.

Ένα πράγμα που δοκιμάσαμε ήταν στο στυλ:

            SPList list = lists["Shared Documents"];
            SPListItemCollection docLibItems = list.Items;
            foreach (SPListItem docLibItem in docLibItems)
            {
                if (docLibItem.File.Name.Equals("Book1.xls"))
                {
                    switch (docLibItem.File.CheckOutStatus)
                    {
                        case SPFile.SPCheckOutStatus.LongTerm:
                          break;
                        case SPFile.SPCheckOutStatus.LongTermOffline:
                           break;
                        case SPFile.SPCheckOutStatus.ShortTerm:
                            try
                            {
                                //docLibItem.File.CheckIn("");
                                docLibItem.File.CheckIn("", SPCheckinType.OverwriteCheckIn);
                                debugLabel.Text = "Short term";
                            }
                            catch (Exception error)
                            {
                                debugLabel.Text = error.Message.ToString();
                            }
                            break;
                        default:
                            try
                            {
                                docLibItem.File.CheckIn("", SPCheckinType.OverwriteCheckIn);
                                docLibItem.File.Update();
                            }
                            catch (Exception error)
                            {
                                debugLabel.Text = error.Message.ToString();
                            }
                            break;
                    }
                }

Αλλά δεν τα ξεκλείδωνε γιατί στη ουσία δεν είναι checked-out. Δοκιμάσαμε να το κάνουμε ckeck-out, check-in και/η update μέσο C# μήπως ξεγελαστεί, αλλά τίποτα.

Link to comment
Share on other sites

 Share

×
×
  • Create New...