Categorie Archieven: SharePoint ontwikkeling

Één reden voor "een of meer veld typen zijn niet goed geïnstalleerd”

Ik was een kleine tweak het gisteren met een webonderdeel dat een CAML query tegen een lijst doet maken.  Ik maakte de verandering, het ingezet en hit met een fout:

Een onverwachte fout opgetreden in de drie dag Outlook weerbericht WebPart. Neem contact op met de systeembeheerder. Een of meer veldtypen zijn niet goed geïnstalleerd. Ga naar de pagina instellingen van lijst om deze velden te verwijderen.

Ik werd geconfronteerd met van een andere excentrieke kwestie eerder zodat ik niet mijn CAML query onmiddellijk aansluiten met de fout die SharePoint werd rapportage voor mij.  Ik heb een snel zoeken bing en en gevonden dit blogbericht nuttig door Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Hier is de slechte query:

query.Query ="<Waar><En><Neq><FieldRef naam 'Abbr' = /><Type waarde = 'Tekst'>SFNY</Waarde><FieldRef naam 'Abbr' = /><Type waarde = 'Tekst'>SFIS</Waarde></Neq></En></Waar>";

Hier is het opgelost:

query.Query ="<Waar><En><Neq><FieldRef naam 'Abbr' = /><Type waarde = 'Tekst'>SFNY</Waarde></Neq><Neq><FieldRef naam 'Abbr' = /><Type waarde = 'Tekst'>SFIS</Waarde></Neq></En></Waar>";

Dus, de moraal van het verhaal is: Zorg ervoor dat uw CAML correct is of u kunt een excentrieke fout krijgen.

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

</einde>

SharePoint 2010 Oplossing vast te zitten in het "implementeren” Status

Ik gebruikte PowerShell om een oplossing te implementeren op een SharePoint-farm (h/t:  Corey Roth en zijn blogbericht). 

Ik ging toen naar de centrale admin, toegankelijk systematiek zetting, en vervolgens "Beheren boerderij oplossingen" om het te implementeren aan de boerderij en mijn (lichte) ontzetting, het vast kwam te zitten in het "distribueren".

Ik heb deze kwestie komen vele malen op de MSDN forums, dus ik behoorlijk nerveus over het was.  Ik zocht een beetje rond en vond dit artikel nuttig (door een schijnbaar toegerekend persoon van http://www.resolutionsnet.co.uk/).  Ik geannuleerd de implementatie baan en wanneer mij tikken in de oplossing, het vertelde me dat het de oplossing met succes hadden ingezet tot drie van de vier servers in de farm.

Ik ging naar de dolende server, de timerservice gestopt en herstart het.  Windowsserver eigenlijk vertelde me dat de service kan niet reageren op de opdracht, dus dat mij vertelt dat het was ziek.

Deze keer, Toen ik ging terug naar centrale admin, Ik was in staat om het te implementeren met geen enkel probleem.

Hopelijk zal dit stukje info helpen sommige in een binden een van de dagen.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Fout van de dag: "Niet toevoegen de opgegeven vergadering aan de GAC”

Ik heb een beetje gevochten met visual studio 2010 op een een sp2010 oplossing en kreeg deze fout:

Er is een fout opgetreden in implementatie stap "Oplossing toevoegen": Fout: De opgegeven vergadering toevoegen niet aan de globale assembly-cache: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Ik ging naar de GAC zelf (c:\windowsassembly) om te proberen en te verwijderen en kreeg een "dossier in gebruik" fout.

Ik deed een iisreset, Ik bijna gedownload Sysinternals, Ik stopte de timerservice in services… tot slot, Ik enkel gesloten en heropend visual studio zelf en ik was eindelijk in staat om het te sluiten uit.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Snel en eenvoudig: Foutopsporing VS 2010 Implementatie van oplossingen

Visual Studio 2010 hard-aan-debug fouten gerapporteerd tijdens de implementatie sommige tijden.  Een snelle en gemakkelijke manier om te doen wat het zeer ruwe zuiveren is te gooien uw eigen benoemde uitzonderingen.  Visual Studio zal laten zien in de console output.

Overwegen dit codefragment:

image

Als deze functie is een webtoepassing met als bereik, site zal null worden.  Als u probeert en verwijzen naar een eigenschap van site, u krijgt de dubbelzinnige fout:

Er is een fout opgetreden in implementatie stap "Oplossing toevoegen": Object reference not set to een exemplaar van een object.

Echter, Als een nieuwe uitzondering te gooien en een tekenreeks doorgeven aan de constructor, u krijgt een iets meer nuttig bericht:

image

Het is een ruwe techniek, maar vrij snel en gemakkelijk.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Timer Job FeatureActivated en functie toepassingsgebied

Ik heb gewerkt met wat code die iemand gaf aan mij voor een timeropdracht.  Hij had niet de werkelijke functie activeren wetboek voorzien zodat ik moest schrijven het, Natuurlijk.  Nam ik voordeel van Andrew Connell de beroemde blogpost over het onderwerp.

Ik ben met behulp van Visual Studio 2010 en implementatie gehouden niet met een fout "fout opgetreden in implementatie stap 'Toevoegen oplossing': Object reference not set to een exemplaar van een object. "

Ik nam zijn code ook letterlijk.  Ik was de functie op het niveau van de webtoepassing scoping, zoals:

image

Als een resultaat, de eigenschappen die worden verzonden naar de ontvanger zijn van de webtoepassing, niet een siteverzameling.  In het einde, de code ziet er als volgt:

openbare nietige FeatureActivated overschrijven(SPFeatureReceiverProperties eigenschappen)
{

    // Doe het volgende met web app scoped functies niet, het leidt tot wanhoop Glimlach
    // SPSite site = eigenschappen.Feature.Parent als SPSite;

    SPWebApplication wa = eigenschappen.Feature.Parent als SPWebApplication;

    Als (WA == null) nieuwe uitzondering gooien("webapp2 is null".);

    foreach (SPJobDefinition baan in wa.JobDefinitions)
    {

        Probeer
        {
            Als (baan.Naam List_JOB_NAME ==)

                baan.Verwijderen();
        }
        vangst (Uitzondering e)
        {
            nieuwe uitzondering gooien("marker 2");
        } // Overstaptijd voor de uitzondering e
    }

    // installeren van de baan

    WeatherForecastTimerJob weatherForecastTimerJob =
        nieuwe WeatherForecastTimerJob(List_JOB_NAME, WA);

    SPMinuteSchedule schema = nieuwe SPMinuteSchedule();
    schema.BeginSecond = 0;
    schema.EndSecond = 59;
    schema.Interval = 5;
    weatherForecastTimerJob.Schedule = plannen;
    weatherForecastTimerJob.Update();

}

De sleutel take-away is dat wanneer de functie is een web app met als bereik, de SPFeatureReceiverProperties SharePoint doorgeeft aan de ontvanger van uw functie heeft web app niveau parameters.  Andrew's oude blog post wordt verondersteld dat wordt het bereik naar de siteverzameling.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Waar is Microsoft.SharePoint.ApplicationPages.Administration.dll?

Ik was een visual studio-project die verwijst naar Microsoft.SharePoint.ApplicationPages.Administration.dll overhandigd.  Het kostte me een beetje terwijl te vinden en ik dacht ik zou delen.  In mijn omgeving, het gelegen op:

c:\Program filescommon filesmicrosoft sharedweb server extensions14configadminbin

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

CodePlex Project – SP2010 Explorer

Als onderdeel van een aan de gang zijnde inspanning om te leren de technische lage niveau details voor SharePoint 2010, Ik heb gemaakt een "SharePoint Explorer"soort gereedschap.  Het idee is niet nieuw.  Ik gebruikte dit project meer dan eens: http://sharepointexplorer.codeplex.com/.  Mijn idee is het creëren van een SharePoint-versie dat gebruik webonderdelen alle details wilt weergeven de low-level verbonden dat het-objectmodel kan bieden. 

Deze blogpost fungeert als beide een aankondiging van het project, alsmede een oproep voor vrijwilligers.  Als u geïnteresseerd bent in het werken aan dit project, laat het me weten via e-mail (Galvin.Paul@Gmail.com) en wij zullen er wel uit.

Hier is het project: http://sp2010explorer.codeplex.com/

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Werken met TreeNodeBinding in de ASP-code.NET Treeview Control

Ik heb gewerkt aan wat ik hoop een snel-released CodePlex project waarmee een mooi geïntegreerde stukje van webonderdelen met elkaar praten via provider/consument verbindingen voor het verkennen van een sharepointsite onder de dekens.  (Dit is zeker eerder gedaan, maar dit is een project leren zo veel als iets anders).  Dit is bedoeld als een vervanging voor de weergave van windows verkenner van SharePoint 2010 documentbibliotheken.

De code heeft de gebruikelijke recursieve bellen naar beneden van de SPWeb en SPLists vanuit een bepaalde voorsprong punt.  Het object dat alle dat doorlopen doet bouwt een XML-tekenreeks die er als volgt ziet:

<sitecollection url =’http://demo2010a:9090′>
 
<Web
     titel = 'Hallo wereld Sandbox' 
     Sjabloon =' een site voor teams om te snel ordenen, Auteur, en delen van informatie, BLAH BLAH BLAH'>

     <lijst
        titel ='BCC_Health_Services_FAQs’
        Sjabloon ='CustomList’
       
ListID =’http://demo2010a:9090/helloworldsandbox[Delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</lijst>

     <lijst
        titel = 'BCC_Notifications' 
        Sjabloon = 'CustomList' 
        ListID =’
http://demo2010a:9090/helloworldsandbox[Delim]5a5a13d1-877 c-41 c 0-9063-b9612be80d5e’>
     </lijst>

  </Web>

</sitecollection>

Ik verwacht om schoon te maken dat XML voordat alles is gezegd en gedaan.

Ik wil graag uiteindelijk die informatie en in een besturingselement Treeview.  Niet precies aarde verbrijzelen spullen.

De uitdaging die ik nam op hier was de boomstructuurweergave verbinden met een besturingselement van de XML-gegevensbron in plaats van handmatig opbouwen mijn treenodes als ik door de boom bladeren.  Ik deed dit deels omdat ik bewust van dingen moeilijker op mezelf maken ben (Dit is immers een project leren) en deels omdat ik heb dit vaag begrip dat boomknopen opbouwen als ik door de boom bladeren is niet een goed idee voor de lange termijn.

Het probleem met deze aanpak is dat het besturingselement Treeview niet over de goede kenmerken op de interessante knooppunten als "list" of "web weet" dus het toont deze output standaard:

 

image

Dat is niet nuttig.  Dit is waar de TreeNodeBinding klasse helpt.  Ik kan dit gebruiken om het besturingselement Treeview vertellen hoe het moet interpreteren het XML-bestand.  Hier is een voorbeeld:

TNB = nieuwe TreeNodeBinding();
TNB.DataMember = "lijst"; // Dit is het label in de xml voor een site.
TNB.TargetField = "listid";
TNB.ValueField = "titel";
TNB.ToolTipField = "Sjabloon";

Deze binding vertelt de treeview dat wanneer het vindt een <lijst> knooppunt in de XML, de bindingen voor TargetField toepassen, ValueField en ToolTipField.  In mei app, deze kaart als volgt:

  • TargetField: Wanneer iemand klikt op een knooppunt waarde, Dit is wat je krijgt voor SelectedNode.Value.  Dit is niet te worden verward met…
  • ValueField: Dit is wat je wilt de Treeview weergeven voor de gebruiker.
  • ToolTipField: De waarde van het XML-bestand dat u wilt gebruiken als een Tooltip.

Toevoegen dat de TreeNodebinding van de boomstructuurweergave DataBindings en u krijgen output als dit:

 

image

Ik zal meer over dit alles moeten als ik op het project blijven en uiteindelijk dit op Codeplex opgemaakt.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Uw aangepaste webonderdeel verbinden met tekst veldfilters

Ik wilde om informatie te ontvangen van een tekstveld filter in SharePoint 2010 in mijn aangepaste webonderdeel.  Ik probeerde met behulp van dit MSDN-artikel Als een basis maar het artikel is ofwel gebroken of ik volg het enkel niet correct.

Een beetje meer zoeken opgedoken Mike Smith's MSDN bijdrage Hier (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Er is een heleboel dingen die er op aansluitbaar webonderdelen maar Mike's artikel is zo eenvoudig als het wordt.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Snel en eenvoudig: Stuur E-mail met Gmail SMTP-Server in.NET C#

Dit is niet precies een nieuw onderwerp, maar toen ik nodig om het te doen, Ik vond een heleboel "waarom niet zulks werkzaamheden voor mij" en niet te veel directe antwoorden. Ik hoop dat iemand vindt dit nuttig.

De volgende bits van code stuurt een e-mail met mijn eigen gmail-account om het te doen, inclusief bijlagen:

met behulp van System.Net.Mail;
met behulp van System.Net;

NetworkCredential loginInfo = Nieuw NetworkCredential("[Mijn Gmail identiteitskaart]", "[Mijn Gmail-wachtwoord]");
MailMessage msg = Nieuw MailMessage();
msg. Van = Nieuw Mailadres("[M Gmail identiteitskaart]@gmail.com");
msg. To.Add(Nieuw Mailadres("paul.galvin@arcovis.com"));
msg. Onderwerp = "Infopath dev proefpersoon";
msg.Lichaam = "<HTML><lichaam><sterke>Een krachtige boodschap.</sterke></lichaam></HTML>";
msg.IsBodyHtml = True;

foreach (tekenreeks aFile in NIPFD.GetAttachmentNamesAndLocations())
{
    msg.Attachments.Add(Nieuw Bijlage(aFile));
} // Bijlagen toe te voegen.

SmtpClient klant = Nieuw SmtpClient("smtp.gmail.com");
client.EnableSsl = True;
client.UseDefaultCredentials = vals;
client.Referenties = loginInfo;
client.Poort = 587;
client.EnableSsl = True;
client.Verzenden(msg);

Een paar belangrijke stukjes die me vertraagd en andere opmerkingen / notities:

  • De eerste regel dat het loginInfo-object maakt nodig heeft om de ID ontdaan van gmail te gebruiken "@gmail.com”. Dus, Als mijn gmail emailadres is "sharepoint@gmail.com"en mijn wachtwoord is"xyzzy"daarna de lijn zou uitzien:

NetworkCredential loginInfo = Nieuw NetworkCredential("sharepoint", "xyzzy");

  • Mijn gmail-account is ingesteld voor gebruik van SSL en dat was geen probleem.
  • Er is wat tegenstrijdige informatie die er op welke poort u moet gebruiken. Ik gebruikte poort 587 en het werkte boete voor me.
  • In mijn geval, Ik ook nodig voor het verzenden van bijlagen. Dat NIPFD object een methode heeft die weet waar mijn bijlagen zijn. Het een volledig pad terug (bijvoorbeeld. "c:\tempattachment1.jpg". In mijn test, Ik had twee bijlagen en beiden werkte prima.

Ik gebruikte visuele studio 2008 om deze code te schrijven.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Technorati Tags: ,,,