Archiv der Kategorie: SharePoint-Entwicklung

Ein Grund für "ein oder mehrere Feld werden Typen nicht ordnungsgemäß installiert”

Ich war gestern ein kleines Zwicken zu einem Webpart, die eine CAML-Abfrage für eine Liste ist.  Ich habe die Änderung, bereitgestellt es und bekam schlagen mit einem Fehler:

Ein unerwarteter Fehler ist aufgetreten in den drei Tag Outlook Wettervorhersage WebPart. Bitte kontaktieren Sie den System-administrator. Ein oder mehrere Feldtypen sind nicht ordnungsgemäß installiert.. Gehen Sie zur Listeneinstellungsseite, um diese Felder zu löschen.

Ich war früher ein weiterer Spinner Punkt gegenüber, so dass ich sofort meine CAML-Abfrage mit dem Fehler angeschlossen haben, die Berichterstattung wurde mir.  Ich habe eine schnelle Bing-Suche und und fanden Sie diesen Blogbeitrag hilfreich von Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Hier ist die schlechte Abfrage:

Abfrage.Query ="<Wo><Und><Neq><FieldRef-Name = "Abbr" /><Wert Type = 'Text'>SFNY</Wert><FieldRef-Name = "Abbr" /><Wert Type = 'Text'>SFIS</Wert></Neq></Und></Wo>";

Hier ist es behoben:

Abfrage.Query ="<Wo><Und><Neq><FieldRef-Name = "Abbr" /><Wert Type = 'Text'>SFNY</Wert></Neq><Neq><FieldRef-Name = "Abbr" /><Wert Type = 'Text'>SFIS</Wert></Neq></Und></Wo>";

Also, die Moral der Geschichte ist: Stellen Sie sicher, Ihren CAML korrekt ist oder Sie erhalten Fehler Spinner.

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

</Ende>

SharePoint 2010 Lösung stecken in "bereitstellen” Status

Ich verwendete PowerShell eine Lösung auf einer SharePoint-Farm bereitstellen (h/t:  Corey Roth und seine Blog-post). 

Ich ging dann an die zentrale admin, Zugriff auf Systemeinstellungen und dann "Verwalten Farm Lösungen" Bereitstellen der Farm und zu meinem (leichte) Entsetzen, es stecken in "Bereitstellen".

Ich habe dieses Problem oft kommen auf den MSDN-Foren, So war ich ziemlich nervös.  Ich durchsuchte herum ein bisschen und fanden Sie diesen Artikel hilfreich (von einer scheinbar nicht zugeordnete Person aus http://www.resolutionsnet.co.uk/).  Ich annullierte den Bereitstellungsauftrag und wenn ich in die Projektmappe geklickt, Er erzählte mir, dass es die Lösung erfolgreich auf drei der vier Server in der Farm bereitgestellt hatte.

Ich ging zu den fehlerhaften server, den Timer-Dienst beendet und neu gestartet es.  Windows Server tatsächlich sagte mir, dass der Dienst konnte nicht auf den Befehl reagiert, also das mir sagt, dass er krank war.

Dieses Mal, als ich ging zurück zu zentralen admin, Ich konnte es problemlos bereitstellen.

Hoffnungsvoll hilft dieses Bit von Informationen in einer Bindung einen der Tage.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Fehler des Tages: "Kann nicht die angegebene Assembly zum GAC hinzufügen”

Ich habe ein wenig mit visual Studio gekämpft 2010 auf eine eine sp2010 Lösung und war bekommen dieses Fehler:

Fehler bei der Bereitstellungsschritt 'Projektmappe hinzufügen': Fehler: Die angegebene Assembly kann nicht im globalen Assemblycache hinzugefügt werden.: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Ich ging zu dem GAC selbst (c:\windowsassembly) um zu versuchen, und entfernen und bekam eine Fehlermeldung "Datei wird verwendet".

Ich habe ein iisreset, Ich heruntergeladen habe, fast Sysinternals, Schließlich hörte ich den Timerdienst in services…, Ich gerade schließen und erneuten Öffnen von visual Studio selbst und ich war endlich in der Lage, es zu schließen.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Schnell und einfach: VS-Debuggen 2010 Lösungsbereitstellung

Visual Studio 2010 hart-zu-Debug Fehler meldet einige Male während der Bereitstellung.  Eine schnelle und einfache Weise zu tun, einige sehr grobe Debuggen ist, Ihre eigenen benannten Ausnahmen auszulösen.  Visual Studio wird ihnen in der Ausgabe-Konsole anzeigen.

Betrachten Sie dieses Stück code:

image

Wenn dieses Feature auf einer Web-Anwendung beschränkt ist, Website wird null sein.  Wenn Sie versuchen auf eine Eigenschaft der Website, Sie erhalten die mehrdeutige Fehlermeldung:

Fehler bei der Bereitstellungsschritt 'Projektmappe hinzufügen': Objektverweis nicht auf eine Instanz eines Objekts festgelegt.

Jedoch, Wenn eine neue Ausnahme auslösen und eine Zeichenfolge an dem Konstruktor übergeben., Sie erhalten eine etwas weitere nützliche Nachricht:

image

Es ist eine grobe Technik, aber ziemlich schnell und einfach.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Timer Job FeatureActivated und Feature-Umfang

Ich arbeite mit einigen Code, die jemand an mich für einen Zeitgeberauftrag übergeben.  Er hatte nicht den tatsächlichen KE-Aktivierungs-Code bereitgestellt, also musste ich es schreiben, Natürlich.  Ich nutzte Andrew Connell bekannten Blog post zum Thema.

Ich benutze Visual Studio 2010 und Bereitstellung gehalten fehl mit der Fehlermeldung "Fehler in Bereitstellungsschritt"Hinzufügen-Lösung": Der Objektverweis nicht auf eine Instanz eines Objekts festgelegt."

Ich nahm seinen Code zu wörtlich.  Ich war das Feature auf der Ebene der Webanwendung Bereichsdefinition, wie gezeigt:

image

Als Folge, die Eigenschaften, die an Empfänger gesendet werden, werden von der Webanwendung, keiner Websitesammlung.  Am Ende, der Code sieht wie folgt aus:

Public override void FeatureActivated(SPFeatureReceiverProperties Eigenschaften)
{

    // Nicht mit Web app Gültigkeitsbereich Funktionen, Es führt zur Verzweiflung Lächeln
    // SPSite Site = Properties.Feature.Parent als SPSite;

    SPWebApplication wa = Properties.Feature.Parent als SPWebApplication;

    If (WA == Null) thrownew Exception("webapp2 ist null.");

    foreach (SPJobDefinition Job wa.JobDefinitions)
    {

        versuchen
        {
            If (Stelle.Name == List_JOB_NAME)

                Stelle.Löschen();
        }
        fangen (Ausnahme e)
        {
            thrownew Exception("Markierung 2");
        } // Catch Exception e
    }

    // Installieren Sie den Auftrag

    WeatherForecastTimerJob WeatherForecastTimerJob =
        neue WeatherForecastTimerJob(List_JOB_NAME, WA);

    SPMinuteSchedule Zeitplan = neue SPMinuteSchedule();
    Zeitplan.BeginSecond = 0;
    Zeitplan.EndSecond = 59;
    Zeitplan.Interval = 5;
    weatherForecastTimerJob.Schedule = Zeitplan;
    weatherForecastTimerJob.Update();

}

Der Schlüssel zum Mitnehmen ist, dass, wenn die Funktion auf eine Web-app beschränkt ist, die SPFeatureReceiverProperties, die SharePoint an Ihr Feature-Empfänger übergibt hat Web app Parameter.  Andrews alte Blog-Eintrag wird davon ausgegangen, dass es auf der Seite Websitesammlung beschränkt ist.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Wo ist Microsoft.SharePoint.ApplicationPages.Administration.dll?

Ich übergab eine visual Studio-Projekt, die auf Microsoft.SharePoint.ApplicationPages.Administration.dll verweist.  Es hat mich ein wenig, während um zu finden, und ich dachte ich würde zu teilen.  In meiner Umgebung, Es befindet sich am:

c:\Programm c:ProgrammeGemeinsame Dateienmicrosoft Sharedweb Server extensions14configadminbin

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

CodePlex-Projekt – SP2010 Explorer

Als Teil der laufenden Bemühungen um die technischen Details der niedrigen Niveau von SharePoint zu erfahren 2010, Ich habe eine "SharePoint Explorer"eine Art Werkzeug.  Die Idee ist nicht neu.  Ich habe dieses Projekt mehr als einmal: http://sharepointexplorer.codeplex.com/.  Meine Idee ist eine SharePoint-Version erstellen, dass Verwendungen verbunden-Webparts für alle Low-Level Details zeigen, dass das Objektmodell bereitstellen kann. 

Dieser Blog-Eintrag dient als beide eine Ankündigung des Projekts sowie einen Aufruf für Freiwillige.  Wenn Sie bei der Arbeit an diesem Projekt interessiert sind, informieren Sie mich per e-Mail (Galvin.Paul@gmail.com) und wir arbeiten es heraus.

Hier ist das Projekt: http://sp2010explorer.codeplex.com/

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Arbeiten mit TreeNodeBinding im ASP.NET-Treeview-Steuerelement

Ich arbeite an was hoffentlich eine bald freigegeben werden CodePlex Projekt, das ein schön integrierte wenig Webparts miteinander zu reden, über Anbieter-Verbraucher Verbindungen zum Zweck der Erkundung einer SharePoint-Website unter der Decke ermöglicht.  (Dies ist sicherlich vor getan worden, aber das ist ein so viel wie alles andere lernen-Projekt).  Dies soll als Ersatz für den Windows-Explorer-Ansicht von SharePoint 2010 Dokumentbibliotheken.

Der Code verfügt über die üblichen rekursiven aufrufen, unten der SPWeb und SPListen aus gegebenen Startpunkt zeigen.  Das Objekt, das alle diese durchlaufen wird baut eine XML-Zeichenfolge, die etwa wie folgt aussieht:

<SiteCollection-Url =’http://demo2010a:9090′>
 
<Web
     Titel = "Hallo Welt-Sandbox" 
     Vorlage =' eine Website für Teams schnell organisieren, Autor, und Austausch von Informationen, BLA BLA BLA ">

     <Liste
        Titel ='BCC_Health_Services_FAQs’
        Vorlage ='CustomList’
       
ListId =’http://demo2010a:9090/helloworldsandbox[Begrenzer]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</Liste>

     <Liste
        Titel = 'BCC_Notifications' 
        Vorlage = 'CustomList' 
        ListId =’
http://demo2010a:9090/helloworldsandbox[Begrenzer]5a5a13d1-877 c-41 C 0-9063-b9612be80d5e’>
     </Liste>

  </Web>

</SiteCollection>

Ich erwarte zu reinigen, die XML vor alles gesagt und getan ist.

Ich möchte schließlich, dass die Informationen und in einem Treeview-Steuerelement.  Erschütternde Sache nicht genau der Erde.

Die Herausforderung habe ich hier war, die Strukturansicht auf ein XML-Datenquelle-Steuerelement statt manuell Aufbau meiner TreeNode-Objekte wie ich die Struktur durchlaufen verbinden.  Ich tat dies, weil ich absichtlich Dinge schwieriger für mich mache (Dies ist schließlich ein Learning-Projekt) und weil ich diese vage Vorstellung haben das Strukturknoten Aufbau, wie ich die Struktur durchlaufen ist keine gute Idee für die langfristige.

Das Problem bei diesem Ansatz ist, dass das Treeview-Steuerelement über die guten Eigenschaften auf den interessanten Knoten wie "List" oder "Web" weiß nicht, so es diese Ausgabe Standardmäßig zeigt:

 

image

Das ist nicht hilfreich.  Dies ist, wo die TreeNodeBinding-Klasse hilft.  Hiermit kann ich um dem Treeview-Steuerelement zu sagen, wie es den XML-Code interpretieren soll.  Hier ist ein Beispiel:

TNB = neue TreeNodeBinding();
TNB.DataMember = "Liste"; // Dies ist die Bezeichnung in den XML-Code für eine Website.
TNB.TargetField = "Listid";
TNB.ValueField = "Titel";
TNB.ToolTipField = "Template";

Diese Bindung der Treeview erzählt, dass wenn es findet eine <Liste> Knoten in der XML-Code, gelten Sie die Bindungen für TargetField, ValueField und ToolTipField.  Im Mai app, Diese Karte wie folgt:

  • TargetField: Wenn jemand auf einen Knoten klickt, Dies ist, was Sie für SelectedNode.Value bekommen.  Dies ist nicht zu verwechseln mit...
  • ValueField: Dies ist, was Sie das TreeView-Steuerelement, um dem Benutzer anzuzeigen.
  • ToolTipField: Der Wert aus dem XML, das Sie als QuickInfo angezeigt werden soll.

Fügen Sie hinzu, dass TreeNodebinding der Strukturansicht DataBindings und Sie wie diese Ausgabe erhalten:

 

image

Ich werde mehr auf all dies haben, wie ich auf das Projekt weiter und schließlich das auf Codeplex.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Verbinden Ihr benutzerdefiniertes Webpart Text Feldfilter

Ich wollte, um Informationen von einem Textfeld Filter in SharePoint erhalten 2010 in meinem benutzerdefinierten WebPart.  Ich habe versucht mit in diesem MSDN-Artikel als Grundlage aber den Artikel ist entweder defekt oder ich verfolge es einfach nicht richtig.

Tauchte ein wenig mehr suchen Mike Smith MSDN-Beitrag Hier (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Es gibt eine Menge Sachen draußen auf verbindbare Webparts, aber Mikes Artikel ist so einfach wie es geht.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Schnell und einfach: Senden Sie E-Mail mit Google Mail SMTP-Server.NET C#

Dies ist nicht gerade ein neues Thema, aber wenn ich benötigt zu ausführen es, Ich fand eine Menge "wird nicht warum diese Arbeit für mich" und nicht zu viele direkte Antworten. Ich hoffe, dass jemand dies nützlich findet.

Das folgende Bit Code schickt eine e-Mail mit meinem Google Mail-Konto, es zu tun, einschließlich Anlagen:

Verwendung System.net.Mail;
Verwendung System.net;

NetworkCredential LoginInfo = Neu NetworkCredential("[Meine Gmail Identifikation]", "[Mein Google Mail-Passwort]");
MailMessage msg = Neu MailMessage();
msg.Aus = Neu MailAddress("[M-Google Mail-Id]@ gmail.com");
msg.To.Add(Neu MailAddress("paul.galvin@arcovis.com"));
msg.Thema = "Infopath Dev Testperson";
msg.Körper = "<HTML><Körper><starke>Eine starke Botschaft.</starke></Körper></HTML>";
msg.IsBodyHtml = wahr;

foreach (Zeichenfolge aFile im NIPFD.GetAttachmentNamesAndLocations())
{
    msg.Attachments.Add(Neu Anlage(aFile));
} // Hinzufügen von Anlagen.

SmtpClient Client = Neu SmtpClient("smtp.gmail.com");
Client.EnableSsl = wahr;
Client.UseDefaultCredentials = falsch;
Client.Anmeldeinformationen = LoginInfo;
Client.Port = 587;
Client.EnableSsl = wahr;
Client.Senden(msg);

Ein paar wichtige Bits, die mich verlangsamt und andere Beobachtungen / Hinweise:

  • Die erste Zeile, die das LoginInfo-Objekt erstellt muss die Gmail verwenden, die, der ID der aberkannt "@ gmail.com”. Also, Wenn mein Gmail Email Address ist "sharepoint@gmail.com"und mein Passwort ist, dass dann die Zeile" Xyzzy"aussehen würde:

NetworkCredential LoginInfo = Neu NetworkCredential("sharepoint", "xyzzy");

  • Mein Gmail abrechnen Verwendung von SSL eingerichtet ist und das war kein problem.
  • Es gibt einige widersprüchliche Informationen aus, auf welchen Port verwenden. Ich verwendete port 587 und es wirkten Bußgeld als mich.
  • In meinem Fall, Ich musste auch die Anhänge senden. Das NIPFD-Objekt verfügt über eine Methode, die weiß, wo meine Anhänge sind. Es gibt einen Pfad vollständig zurück. (zB. "c:\Tempattachment1.jpg". In meinem test, Ich hatte zwei Anlagen und beide wirkten Bußgeld.

Ich verwendet visual studio 2008 um diesen Code zu schreiben.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Technorati Tags: ,,,