Αρχεία κατηγοριών: Ανάπτυξη του SharePoint

Ένας λόγος για "ένα ή περισσότερα πεδίο τύπους δεν έχουν εγκατασταθεί σωστά”

Έκανα ένα μικρό tweak χθες σε ένα τμήμα web που δεν ένα ερώτημα CAML έναντι μιας λίστας.  Έκανα την αλλαγή, έχουν αναπτυχθεί σε αυτό και να έχεις επισκέψεων με σφάλμα:

Παρουσιάστηκε ένα μη αναμενόμενο σφάλμα στο τις τρεις ημέρα Outlook Weather Forecast WebPart. Επικοινωνήστε με το διαχειριστή του συστήματος. Έναν ή περισσότερους τύπους τομέα δεν έχουν εγκατασταθεί σωστά. Μεταβείτε στη σελίδα ρυθμίσεις λίστας να διαγράψετε αυτά τα πεδία.

Ήμουν αντιμετωπίζει ένα άλλο ζήτημα εκκεντρικά νωρίτερα έτσι δεν συνδέω αμέσως το ερώτημα μου CAML με το σφάλμα που SharePoint εκθέσεων για μένα.  Έκανα μια γρήγορη αναζήτηση bing και και βρήκα αυτό το post χρήσιμο blog από Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Εδώ είναι το κακό ερώτημα:

ερώτημα. = Του ερωτήματος"<Όπου><Και><NEQ><FieldRef όνομα = 'Abbr' /><Δημιουργία τύπου τιμής = «Κείμενο»>SFNY</Αξία><FieldRef όνομα = 'Abbr' /><Δημιουργία τύπου τιμής = «Κείμενο»>SFIS</Αξία></NEQ></Και></Όπου>";

Εδώ είναι σταθερό:

ερώτημα. = Του ερωτήματος"<Όπου><Και><NEQ><FieldRef όνομα = 'Abbr' /><Δημιουργία τύπου τιμής = «Κείμενο»>SFNY</Αξία></NEQ><NEQ><FieldRef όνομα = 'Abbr' /><Δημιουργία τύπου τιμής = «Κείμενο»>SFIS</Αξία></NEQ></Και></Όπου>";

Έτσι, το ηθικό δίδαγμα της ιστορίας είναι: Βεβαιωθείτε ότι σας CAML είναι σωστή, ή μπορείτε να πάρετε ένα λάθος εκκεντρικά.

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

</Τέλος>

SharePoint 2010 Διάλυμα κολλήσει σε "ανάπτυξη” Κατάσταση

Χρησιμοποίησα PowerShell για να αναπτύξετε μια λύση σε ένα σύμπλεγμα του SharePoint (h/t:  Corey Roth και του καταχώρηση ιστολογίου). 

Πήγα στη συνέχεια να το κεντρικό admin, πρόσβαση σε ρυθμίσεις συστήματος και στη συνέχεια "Διαχείριση συμπλέγματος λύσεις" για να αναπτύξετε αυτό, της εκμετάλλευσης και να μου (ελαφρά) θλίψη, Αυτό κόλλησε σε "ανάπτυξη".

Έχω δει αυτό το ζήτημα καταλήξει πολλές φορές σε φόρουμ της MSDN, έτσι ήταν αρκετά νευρικού σχετικά με αυτό.  Ερεύνησα γύρω από ένα bit και βρέθηκε αυτό το χρήσιμο άρθρο (από φαινομενικά unattributed πρόσωπο από http://www.resolutionsnet.co.uk/).  Μου να ακυρωθεί η εργασία ανάπτυξης και όταν έκανα κλικ σε διάλυμα, μου είπε ότι αυτό είχε αναπτυχθεί η λύση με επιτυχία σε τρεις από τους τέσσερις διακομιστές στο σύμπλεγμα.

Πήγα στο errant διακομιστή, διακόπηκε η υπηρεσία χρονομετρητή και επανεκκίνηση αυτό.  Windows server πράγματι μου είπε ότι η υπηρεσία απέτυχε να αποκριθεί στην εντολή, Αυτό που μου λέει ότι ήταν άρρωστα.

Αυτή τη φορά, Όταν πήγα πίσω στην κεντρική admin, Ήμουν σε θέση να αναπτύξουν με κανένα πρόβλημα.

Ας ελπίσουμε ότι αυτό το bit των πληροφοριών θα βοηθήσουν κάποιους σε μια σύνδεση μία από τις ημέρες.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Σφάλμα της ημέρας: "Δεν είναι δυνατό να προσθέσετε της καθορισμένης συγκρότησης στο GAC”

Σας έχετε αγωνίζονται λίγο με το visual studio 2010 σχετικά με μια μια λύση sp2010 και όλο αυτό το σφάλμα:

Παρουσιάστηκε σφάλμα στο βήμα ανάπτυξης «Προσθέστε λύση»: Σφάλμα: Δεν είναι δυνατή η προσθήκη της καθορισμένης συγκρότησης στο global assembly cache: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Πήγα στο GAC ίδια (c:\windowsassembly) να προσπαθήσουμε να εξαλείψουμε και έχεις ένα σφάλμα "το αρχείο χρησιμοποιείται".

Έκανα την εφαρμογή iisreset, Κατέβασα σχεδόν Sysinternals, Σταμάτησα η υπηρεσία χρονομέτρησης σε υπηρεσίες... τέλος, Μόλις έκλεισα και άνοιξε ξανά το visual studio, τα ίδια και ήμουν τελικά ικανός να με αναστείλλουν.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Γρήγορη και εύκολη: Εντοπισμός σφαλμάτων VS 2010 Λύση ανάπτυξης

Visual Studio 2010 εκθέσεις σκληρό-να-debug σφάλματα κατά τη διάρκεια της ανάπτυξης ορισμένες φορές.  Ένα γρήγορο και εύκολο τρόπο για να το κάνετε κάποιες πολύ πρόχειρη εντοπισμού σφαλμάτων είναι να ρίξει το δικό σας όνομα εξαιρέσεις.  Visual Studio τους θα δείξει στην κονσόλα εξόδου.

Θεωρούν αυτό το bit του κώδικα:

image

Εάν αυτή η δυνατότητα έχει ως πεδίο μιας εφαρμογής web, τοποθεσία της θα είναι null.  Εάν μπορείτε να δοκιμάσετε και να αναφοράς μια ιδιότητα του site, θα πάρετε το διφορούμενο σφάλμα:

Παρουσιάστηκε σφάλμα στο βήμα ανάπτυξης «Προσθέστε λύση»: Αναφορά αντικειμένου δεν έχει οριστεί σε μια παρουσία ενός αντικειμένου.

Ωστόσο, Αν ρίξει μια νέα εξαίρεση και να περάσει μια συμβολοσειρά του κατασκευαστή, Μπορείτε να πάρετε ένα ελαφρώς πιό χρήσιμο μήνυμα:

image

Είναι μια τεχνική που αργού, αλλά αρκετά γρήγορη και εύκολη.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Χρονιστής FeatureActivated εργασίας και τη δυνατότητα εφαρμογής

Έχω εργαστεί με κάποιο κωδικό που κάποιος παραδόθηκε σε μένα για μια εργασία χρονομέτρησης.  Δεν είχα παρείχε το πραγματικό χαρακτηριστικό κωδικό ενεργοποίησης, έτσι έπρεπε να το γράψω, Φυσικά.  Πήρα πλεονέκτημα του Του Andrew Connell διάσημο blog post σχετικά με το θέμα.

Είμαι με τη χρήση Visual Studio 2010 και ανάπτυξης διατηρούνται παραλείποντας με σφάλμα "Παρουσιάστηκε σφάλμα στο βήμα ανάπτυξης «Προσθήκη λύση»: Αντικείμενο αναφοράς δεν έχει οριστεί σε μια παρουσία ενός αντικειμένου.»

Έπαιρνα πολύ κυριολεκτικά του κώδικα.  Εγώ φέροντος το χαρακτηριστικό γνώρισμα σε επίπεδο εφαρμογής web, όπως φαίνεται:

image

Ως εκ τούτου, Οι ιδιότητες που στέλνονται στο δέκτη είναι από την εφαρμογή web, δεν είναι μια συλλογή τοποθεσιών.  Στο τέλος, ο κώδικας μοιάζει με αυτό:

κοινό παρακάμψετε άκυρη FeatureActivated(SPFeatureReceiverProperties ιδιότητες)
{

    // Μην το κάνετε τα ακόλουθα με web app scoped χαρακτηριστικά, Αυτό οδηγεί στην απόγνωση Χαμόγελο
    // SPSite site = ιδιότητες.Feature.Parent ως SPSite;

    SPWebApplication wa = ιδιότητες.Feature.Parent ως SPWebApplication;

    Αν (WA == «Void») ρίξει νέα εξαίρεση("webapp2 είναι null.");

    foreach (SPJobDefinition δουλειά στο wa.JobDefinitions)
    {

        Δοκιμάστε
        {
            Αν (εργασία.Όνομα == List_JOB_NAME)

                εργασία.Διαγραφή();
        }
        αλιευμάτων (Εξαίρεση ε)
        {
            ρίξει νέα εξαίρεση("δείκτης 2");
        } // πιάσει την εξαίρεση e
    }

    // εγκαταστήσετε τη δουλειά

    WeatherForecastTimerJob weatherForecastTimerJob =
        νέα WeatherForecastTimerJob(List_JOB_NAME, WA);

    Πρόγραμμα SPMinuteSchedule = νέα SPMinuteSchedule();
    χρονοδιάγραμμα.BeginSecond = 0;
    χρονοδιάγραμμα.EndSecond = 59;
    χρονοδιάγραμμα.Διάστημα = 5;
    weatherForecastTimerJob.Schedule = το πρόγραμμα;
    weatherForecastTimerJob.Update();

}

Το κλειδί take-away είναι ότι όταν το χαρακτηριστικό είναι scoped σε έναν Ιστό app, το SPFeatureReceiverProperties που του SharePoint που περνάει στο δέκτη σας χαρακτηριστικό έχει web app επίπεδο παραμέτρους.  Παλαιά είσοδο blog του Ανδρέα υποθέτει είναι scoped στη συλλογή τοποθεσιών.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Όπου είναι Microsoft.SharePoint.ApplicationPages.Administration.dll?

Μου επιδόθηκε ένα έργο visual studio που παραπέμπει σε Microsoft.SharePoint.ApplicationPages.Administration.dll.  Χρειάστηκα λίγο ενώ για την εύρεση της σκέψης, και συμμερίζομαι.  Στο περιβάλλον μου, βρίσκεται σε:

c:\πρόγραμμα filescommon filesmicrosoft sharedweb server extensions14configadminbin

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

CodePlex Project – SP2010 Explorer

Ως μέρος της μια συνεχή προσπάθεια να μάθουν τις τεχνικές λεπτομέρειες των χαμηλού επιπέδου του SharePoint 2010, Έχω δημιουργήσει ένα "SharePoint Explorer"είδος εργαλείο.  Η ιδέα δεν είναι νέα.  Χρησιμοποίησα αυτό το έργο περισσότερο από μία φορά: http://sharepointexplorer.codeplex.com/.  Ιδέα μου είναι να δημιουργήσετε μια έκδοση του SharePoint ότι χρήσεις συνδεδεμένα τμήματα web για να δείξει όλες τις χαμηλού επιπέδου λεπτομέρειες ότι το μοντέλο αντικειμένου μπορεί να παρέχει. 

Αυτό το blog post που χρησιμεύει ως δύο μια ανακοίνωση για το έργο, καθώς και πρόσκληση για εθελοντές.  Αν σας ενδιαφέρει να εργάζονται για το έργο, Επιτρέψτε μου να ξέρω μέσω του ηλεκτρονικού ταχυδρομείου (Galvin.Paul@Gmail.com) και εμείς θα το επεξεργαστεί.

Εδώ είναι το έργο: http://sp2010explorer.codeplex.com/

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Εργάζονται με TreeNodeBinding μετά την ανάπτυξη του στοιχείου ελέγχου ASP.NET Treeview

Έχω εργαστεί σε αυτό που ελπίζω ότι θα είναι μια σύντομα-κυκλοφόρησε CodePlex έργου που παρέχει ένα ωραίο ολοκληρωμένο κομμάτι των τμημάτων web που μιλούσαν μεταξύ τους μέσω συνδέσεων υπηρεσίας παροχής/καταναλωτή με σκοπό τη διερεύνηση μιας τοποθεσίας του SharePoint κάτω από τα σκεπάσματα.  (Αυτό βεβαίως έχει γίνει στο παρελθόν, αλλά αυτό είναι ένα πρόγραμμα εκμάθησης όσο οτιδήποτε άλλο).  Αυτό είναι γραφτό να γίνει μια αντικατάσταση για τα windows εξερευνητής άποψη του SharePoint 2010 βιβλιοθήκες εγγράφων.

Ο κώδικας έχει η συνήθης αναδρομική έκκληση προς τα κάτω το SPWeb και SPLists από ένα δεδομένο σημείο.  Το αντικείμενο που κάνει όλα που διέρχονται από συσσωρεύεται μια συμβολοσειρά XML που μοιάζει κάπως έτσι:

<συλλογή_τοποθεσιών url =’http://demo2010a:9090′>
 
<Web
     Τίτλος = «Γεια σας κόσμο Sandbox» 
     Πρότυπο = «μια τοποθεσία για ομάδες για να οργανώσετε γρήγορα, συγγραφέας, και να ανταλλάσσουν πληροφορίες, ΜΠΛΑ ΜΠΛΑ ΜΠΛΑ»>

     <λίστα
        Τίτλος = «BCC_Health_Services_FAQs’
        Πρότυπο =» CustomList’
       
ListId =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</λίστα>

     <λίστα
        Τίτλος = «BCC_Notifications» 
        Πρότυπο = «CustomList» 
        ListId =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1 - 877c - 41c 0-9063-b9612be80d5e’>
     </λίστα>

  </Web>

</συλλογή_τοποθεσιών>

Περιμένω να καθαρίσει επάνω το XML πριν από όλα έχουν ειπωθεί και γίνει.

Θα ήθελα να τελικά να πάρετε τις πληροφορίες αυτές, μέχρι και σε ένα στοιχείο ελέγχου Treeview.  Δεν είναι ακριβώς γη συγκλονιστικά πράγματα.

Η πρόκληση που πήρα εδώ ήταν να συνδέσει την ιεραρχημένη προβολή με ένα στοιχείο ελέγχου προέλευσης δεδομένων XML αντί να οικοδομούμε με μη αυτόματο τρόπο τις treenodes μου όπως εγώ διασχίζουν το δέντρο.  Έκανα αυτό, εν μέρει επειδή είμαι σκόπιμα κάνει τα πράγματα πιο δύσκολο για τον εαυτό μου (Αυτό είναι ένα πρόγραμμα εκμάθησης μετά από όλα) και εν μέρει επειδή έχω αυτό αόριστη ιδέα ότι η δημιουργία κόμβους δέντρο όπως εγώ διασχίζουν το δέντρο δεν είναι μια καλή ιδέα για τους μακροχρόνια ανέργους.

Το πρόβλημα με αυτή την προσέγγιση είναι ότι Treeview ελέγχου δεν γνωρίζει για τις καλές ιδιότητες στους κόμβους ενδιαφέρον όπως "λίστα" ή "web", έτσι ώστε να δείχνει αυτό εξόδου από προεπιλογή:

 

image

Αυτό δεν είναι χρήσιμο.  Αυτό είναι όπου βοηθά την κλάση TreeNodeBinding μετά την ανάπτυξη.  Μπορώ να χρησιμοποιήσω αυτό για να πει το Treeview στοιχείο ελέγχου πώς αυτό θα πρέπει να ερμηνεύσει το XML.  Εδώ είναι ένα παράδειγμα:

tnb = νέα TreeNodeBinding μετά την ανάπτυξη();
tnb.DataMember = "λίστα"; // Αυτό είναι η ετικέτα στο xml για μια τοποθεσία.
tnb.TargetField = "listid";
tnb.ValueField = "Τίτλος";
tnb.ToolTipField = "Πρότυπο";

Αυτή η δεσμευτική λέει το treeview που όταν βρίσκει ένα <λίστα> κόμβος στο XML, ισχύουν τα bindings για TargetField, ValueField και ToolTipField.  Στο Μαΐου app, αυτά χάρτη ως εξής:

  • TargetField: Όταν κάποιος κάνει κλικ σε μια κόμβου τιμή, Αυτό είναι τι θα πάρετε για SelectedNode.Value.  Αυτό είναι δεν πρέπει να συγχέεται με...
  • ValueField: Αυτό είναι ό, τι θέλετε το Treeview να εμφανίζει στο χρήστη.
  • ToolTipField: Η αξία από το αρχείο XML που θέλετε ως συμβουλή εργαλείου.

Προσθέστε ότι η TreeNodeBinding μετά την ανάπτυξη της ιεραρχημένης προβολής του συνδέσεις δεδομένων και να πάρει εξόδου όπως αυτό:

 

image

Θα έχω περισσότερο όλα αυτά όπως θα συνεχιστούν και τελικά να βάλει αυτό επάνω σε Codeplex.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Σύνδεση φίλτρα πεδίου κειμένου σας προσαρμοσμένο Τμήμα Web

Θα ήθελα να λάβετε πληροφορίες από ένα πεδίο κειμένου με το φίλτρο στο SharePoint 2010 το μέρος του Ιστού συνήθειας μου.  Εγώ προσπάθησα χρησιμοποιώνταs αυτό το άρθρο MSDN ως βάση αλλά το άρθρο είναι είτε σπασμένα ή απλά δεν είμαι μετά το σωστά.

Λίγο πιο αναζήτηση εμφανίστηκε Mike Smith Συμβολή του MSDN Εδώ (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Υπάρχουν πολλά πράγματα εκεί έξω στο web επικοινωνούντα μέρη αλλά άρθρο του Mike είναι τόσο απλό όσο παίρνει.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Γρήγορη και εύκολη: Αποστολή ηλεκτρονικού ταχυδρομείου χρησιμοποιώντας το Gmail SMTP διακομιστή σε C# .NET

Αυτό δεν είναι ακριβώς ένα νέο θέμα, αλλά όταν χρειάζεται να το κάνουμε, Βρήκα πολλά "γιατί δεν θα το έργο αυτό για μένα" και δεν είναι πάρα πολλές άμεσες απαντήσεις. Εγώ ελπίδα κάποιος βρίσκει αυτό το χρήσιμο.

Το παρακάτω κομμάτι του κώδικα θα στείλει ένα μήνυμα ηλεκτρονικού ταχυδρομείου χρησιμοποιώντας το gmail λογαριασμό δικό μου να το κάνουμε, συμπεριλαμβανομένων των συνημμένων:

χρήση System.Net.Mail;
χρήση System.Net;

NetworkCredential loginInfo = νέα NetworkCredential("[Ταυτότητα Gmail μου]", "[Μου τον κωδικό πρόσβασης Gmail]");
MailMessage MSG = νέα MailMessage();
MSG. From = νέα MailAddress("[M Gmail Id]@gmail.com");
MSG. To.Add(νέα MailAddress("στο paul.galvin@arcovis.com"));
MSG. Θέμα = «Θέμα δοκιμής infopath dev";
MSG. Σώμα = "<HTML><οργανισμός><ισχυρή>Ένα ισχυρό μήνυμα.</ισχυρή></οργανισμός></HTML>";
MSG. IsBodyHtml = TRUE;

foreach (συμβολοσειρά aFile σε NIPFD. GetAttachmentNamesAndLocations())
{
    MSG. Attachments.Add η(νέα Συνημμένο(aFile));
} // Προσθήκη συνημμένων.

SmtpClient πελάτη = νέα SmtpClient("smtp.gmail.com");
πελάτη. EnableSsl = TRUE;
πελάτη. UseDefaultCredentials = ψευδές;
πελάτη. Διαπιστευτήρια = loginInfo;
πελάτη. Λιμάνι = 587;
πελάτη. EnableSsl = TRUE;
πελάτη. Αποστολή(MSG);

Μερικά βασικά κομμάτια που μου επιβραδύνθηκε και άλλες παρατηρήσεις / σημειώσεις:

  • Η πρώτη γραμμή που δημιουργεί το loginInfo αντικείμενο πρέπει να χρησιμοποιήσει το gmail ID απογυμνωθεί από "η @gmail.com”. Έτσι, Εάν η διεύθυνση ηλεκτρονικού ταχυδρομείου gmail μου είναι "στο sharepoint@gmail.com"και τον κωδικό πρόσβασής μου είναι"xyzzy"τότε η γραμμή θα εμοίαζε με:

NetworkCredential loginInfo = νέα NetworkCredential("sharepoint", "xyzzy");

  • Gmail λογαριασμό μου έχει ρυθμιστεί ώστε να χρησιμοποιούν SSL και αυτό δεν ήταν ένα πρόβλημα.
  • Υπάρχει κάποια αντικρουόμενες πληροφορίες εκεί έξω για το ποια θύρα να χρησιμοποιήσετε. Χρησιμοποίησα το λιμάνι 587 και αυτό έλυσα εξαιρετικός για εμένα.
  • Στην περίπτωσή μου, Επίσης χρειάζεται να στείλει συνημμένα. Αυτό το αντικείμενο NIPFD έχει μια μέθοδο που ξέρει πού είναι συνημμένα μου. Επιστρέφει μια διαδρομή πλήρως (π.χ.. "γ:\tempattachment1.jpg". Σε δοκιμασία η μου, Είχα δύο συνημμένα και οι δύο εργάστηκαν πρόστιμο.

Χρησιμοποίησα το οπτικό στούντιο 2008 να γράψετε αυτόν τον κώδικα.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Technorati Tags: ,,,