Kategoriarkiv: SharePoint-utvikling

En grunn for "ett eller flere felt typer ikke er riktig installert”

Jeg var å gjøre en liten tweak i går til en webdel som gjør en CAML-spørring mot en liste.  Jeg gjort endringen, rullet den og kom hit med en feil:

Det har oppstått en uventet feil i tre dag Outlook værmelding webdel. Kontakt systemansvarlig. Én eller flere typer er ikke riktig installert. Gå til innstillinger-siden for listen du vil slette disse feltene.

Jeg var fasadeforkledning problem for en annen oddball tidligere slik at jeg ikke umiddelbart koble min CAML-spørring med feil som SharePoint var rapportering til meg.  Jeg gjorde en rask bing Søk og og fant dette blogginnlegget nyttig ved Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Her er dårlig spørringen:

spørringen.Spørre = (likhetstegn)"<Der><Og><NEQ><FieldRef navn = 'Abbr' /><Verditype = 'Tekst'>SFNY</Verdi><FieldRef navn = 'Abbr' /><Verditype = 'Tekst'>SFIS</Verdi></NEQ></Og></Der>";

Her er det faste:

spørringen.Spørre = (likhetstegn)"<Der><Og><NEQ><FieldRef navn = 'Abbr' /><Verditype = 'Tekst'>SFNY</Verdi></NEQ><NEQ><FieldRef navn = 'Abbr' /><Verditype = 'Tekst'>SFIS</Verdi></NEQ></Og></Der>";

Så, moralske av historien er: Kontroller at din CAML er riktig, eller du kan få en underlig-feil.

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

</slutten>

SharePoint 2010 Løsning som er fast i "distribusjon av” Status

Jeg brukte PowerShell til å distribuere en løsning til en SharePoint-farm (h/t:  Corey Roth og hans blogginnlegg). 

Jeg deretter gikk til sentral admin, tilgang til systeminnstillinger og deretter "Manage gården løsninger" å distribuere den i farmen og til min (liten) forferdelse, Det ble sittende fast i "distribusjon av".

Jeg har sett dette spørsmålet kommer opp mange ganger på MSDN-foraene, så jeg var ganske nervøs om det.  Jeg søkte litt rundt og fant denne nyttig artikkelen (av en tilsynelatende unattributed person fra http://www.resolutionsnet.co.uk/).  Jeg avlyste distribusjonsjobben og når jeg klikket i løsningen, Det fortalte meg at det hadde vellykket utplassert løsningen til tre av de fire serverne i farmen.

Jeg gikk til villfaren serveren, stoppet tidtakertjenesten og restarted den.  Windows server faktisk fortalt meg at tjenesten svarte ikke på kommandoen, så det sier meg at det var syk.

denne gangen, da jeg gikk tilbake til Sentraladministrasjon, Jeg var i stand til å distribuere den uten problem.

Forhåpentligvis vil denne litt info hjelpe noen i en binde en av dagene.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Feil av dagen: "Kan ikke legge den angitte samlingen til GAC”

Jeg har kjempet litt med visual studio 2010 på en en sp2010 løsning og fikk denne feilen:

Feil i distribusjonen trinn "Legge løsning": Feil: Kan ikke legge den angitte samlingen til den globale samlingsbufferen: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Jeg dro til GAC seg selv (c:\windowsassembly) å forsøke å fjerne og fikk en "fil i bruk" feil.

Jeg gjorde en iisreset, Jeg lastet ned nesten Sysinternals, Jeg stoppet tidtakertjenesten i tjenester... endelig, Jeg lukket og gjenåpnet visual studio seg selv og jeg var endelig i stand til å lukke den.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Rask og enkel: Feilsøking VS 2010 Distribusjonsløsning

Visual Studio 2010 rapporterer til debug feil under distribusjon noen ganger.  En rask og enkel måte å gjøre noen svært ujevn feilsøking er å kaste din egen navngitt unntak.  Visual Studio vil vise dem i utdata-konsollen.

Vurdere denne bit av koden:

image

Hvis denne funksjonen er begrenset til en web-applikasjon, området vil være null.  Hvis du prøver og refererer til en egenskap for området, du får feilen tvetydig:

Feil i distribusjonen trinn "Legge løsning": Objektreferanse er ikke satt til en forekomst av et objekt.

Men, Hvis Iverksett et unntak for nye og sender en streng til konstruktør, du får en melding om litt mer nyttig:

image

Det er en rå teknikk, men ganske raskt og enkelt.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Tidtaker jobb FeatureActivated og funksjonen omfang

Jeg har jobbet med noen kode som noen ga meg for en tidtakerjobb.  Han hadde ikke gitt faktiske funksjonen aktiviseringen koden så jeg måtte skrive det, selvfølgelig.  Jeg tok fordel av Andrew Connell berømte blogginnlegg om emnet.

Jeg bruker Visual Studio 2010 og distribusjon holdt mislykkes med en feil "Feil oppstod i distribusjon trinn"Legg til løsning": Objektreferanse er ikke satt til en forekomst av et objekt."

Jeg tok hans koden for bokstavelig talt.  Jeg var scoping funksjonen til webprogramnivå, som vist:

image

Som et resultat, egenskaper som sendes til mottakeren er fra web-applikasjon, ikke en områdesamling.  Til slutt, koden ser slik ut:

public override ugyldige FeatureActivated(SPFeatureReceiverProperties egenskaper)
{

    // Ikke gjøre følgende med web app scoped funksjoner, Det fører til fortvilelse Smil
    // SPSite-området = egenskaper.Feature.Parent som SPSite;

    SPWebApplication wa = egenskaper.Feature.Parent som SPWebApplication;

    Hvis (WA == null) kaste nytt unntak("webapp2 er null.");

    foreach (SPJobDefinition jobb i wa.JobDefinitions)
    {

        Prøv
        {
            Hvis (jobb.Navnet == List_JOB_NAME)

                jobb.Slette();
        }
        fange (Unntak-e)
        {
            kaste nytt unntak("markør 2");
        } // fange unntakelsen e
    }

    // installere jobben

    WeatherForecastTimerJob weatherForecastTimerJob =
        nye WeatherForecastTimerJob(List_JOB_NAME, WA);

    SPMinuteSchedule tidsplan = ny SPMinuteSchedule();
    planlegge.BeginSecond = 0;
    planlegge.EndSecond = 59;
    planlegge.Interval = 5;
    weatherForecastTimerJob.Schedule = Planlegg;
    weatherForecastTimerJob.Update();

}

Nøkkelen for take-away er at når funksjonen er begrenset til en web-app, SPFeatureReceiverProperties som SharePoint sender til funksjon mottakeren har web app nivå parametere.  Andrews gammel bloggoppføring forutsetter at det er begrenset til områdesamlingen.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Der er Microsoft.SharePoint.ApplicationPages.Administration.dll?

Jeg ble levert en visual studio-prosjekt som refererer til Microsoft.SharePoint.ApplicationPages.Administration.dll.  Det tok meg litt mens for å finne det, og jeg trodde jeg ville dele.  I min miljø, Det ligger på:

c:\program filescommon filesmicrosoft sharedweb server extensions14configadminbin

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

CodePlex Project – SP2010 Explorer

Som en del av et pågående forsøk på å lære de tekniske lavt nivå detaljene for SharePoint 2010, Jeg har opprettet en "SharePoint Explorer"slags verktøy.  Ideen er ikke ny.  Jeg brukte dette prosjektet mer enn én gang: http://sharepointexplorer.codeplex.com/.  Min idé er å lage en SharePoint versjon at bruker koblet webdeler til å vise alle lavnivå detaljene at objektmodellen kan gi. 

Denne bloggen fungerer som både en kunngjøring av prosjektet samt en samtale for frivillige.  Hvis du er interessert i å jobbe på dette prosjektet, gi meg beskjed via e-post (Galvin.Paul@gmail.com) og vi vil jobbe den ut.

Her er prosjektet: http://sp2010explorer.codeplex.com/

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Arbeide med TreeNodeBinding i ASP.NET Treeview-kontrollen

Jeg har jobbet på det jeg håper vil bli en snart utgitt CodePlex prosjekt som gir en fin integrert bit av webdeler som snakker til hverandre via leverandør/forbruker tilkoblinger for å utforske et SharePoint-område under dynen.  (Dette er sikkert gjort før, men dette er en læring prosjekt så mye som noe annet).  Dette er ment å være en erstatning for windows Utforsker-visningen av SharePoint 2010 dokumentbiblioteker.

Koden er vanlige rekursiv påkalte Spwebs og SPLists fra en gitt start punkt.  Objektet som gjør at traversering bygger opp en XML-streng som ser omtrent slik ut:

<SiteCollection url =’http://demo2010a:9090′>
 
<Web
     Tittel = "Hei verden sandkasse" 
     Mal = "et område hvor grupper raskt organisere, Forfatter, og dele informasjon, BLAH BLAH BLAH'>

     <liste
        Tittel ='BCC_Health_Services_FAQs’
        Mal ='CustomList’
       
ListId =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</liste>

     <liste
        Tittel = 'BCC_Notifications' 
        Mal = 'CustomList' 
        ListId =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1-877 c-41 c 0-9063-b9612be80d5e’>
     </liste>

  </Web>

</SiteCollection>

Jeg forventer å rydde opp som XML før alt er sagt og gjort.

Jeg ønsker å få den informasjonen til slutt opp og inn i en Treeview-kontrollen.  Ikke akkurat jord knuste ting.

Utfordringen jeg tok på her var å koble trevisningen til en XML-datakilde kontrollen i stedet for manuelt å bygge opp min TreeNode som jeg traversere treet.  Jeg gjorde dette, delvis fordi jeg bevisst gjør ting vanskeligere på meg selv (Dette er et prosjekt for læring tross alt) og delvis fordi jeg har denne vage forestillingen om at bygge opp trenoder som jeg traversere treet er ikke lurt på lang sikt.

Problemet med denne tilnærmingen er at Treeview-kontrollen ikke vet om god attributtene på interessante nodene som "list" eller "web", slik at den viser dette output som standard:

 

image

Det er ikke nyttig.  Dette er hvor TreeNodeBinding klassen hjelper.  Jeg kan bruke dette til å fortelle Treeview-kontrollen hvordan det skal tolke XML.  Her er et eksempel:

tnb = nye TreeNodeBinding();
tnb.DataMember = "liste"; // Dette er etiketten i xml for et område.
tnb.TargetField = "listid";
tnb.ValueField = "title";
tnb.ToolTipField = "Mal";

Denne bindingen forteller treeview at når den finner en <liste> noden i XML, bruke bindinger for TargetField, ValueField og ToolTipField.  I mai app, Dette kartet som følger:

  • TargetField: Når noen klikker på en nodeverdien, Dette er hva du får for SelectedNode.Value.  Dette er ikke å forveksles med...
  • ValueField: Dette er hva du vil Treeview å vise til brukeren.
  • ToolTipField: Verdien fra XML-filen du vil bruke som et verktøytips.

Legg til at TreeNodebinding i trevisningen databindinger, og du får utgang som dette:

 

image

Jeg vil ha mer på alt dette som jeg fortsette på prosjektet, og til slutt sette dette på Codeplex.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Koble tekst feltfiltre til din egendefinerte webdel

Jeg ønsket å motta informasjon fra et tekstfelt-filter i SharePoint 2010 i min egendefinerte webdel.  Jeg forsøkt benytter Denne MSDN-artikkelen som en basis, men artikkelen er enten ødelagt eller jeg bare ikke følge det riktig.

Litt mer søker skrudd opp Mike Smiths MSDN-bidrag her (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Det er mange ting der ute på connectable webdeler men Mikes artikkelen er så enkelt som det blir.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Rask og enkel: Sende Email benytter Gmail SMTP-Server i .NET C#

Dette er ikke akkurat et nytt emne, men når jeg trengte å gjøre det., Jeg fant en masse "Hvorfor vil ikke dette fungere for meg" og ikke altfor mange direkte svar. Jeg håper noen finner dette nyttig.

Følgende bit av koden sender en e-post med gmail-kontoen min egen for å gjøre det, vedlegg:

ved hjelp av System.Net.Mail;
ved hjelp av System.Net;

NetworkCredential loginInfo = nye NetworkCredential("[Meg Gmail ID]", "[Min Gmail-passordet]");
MailMessage MSG = nye MailMessage();
MSG.From = nye MailAddress("[M Gmail Id]@gmail.com");
MSG.To.Add(nye MailAddress("paul.galvin@arcovis.com < script cf-hash ="f9e31"type =" text/javascript"> / *  * /"));
MSG. Subject = "Test infopath dev emne";
MSG. Body = "<HTML><kroppen><sterk>Et sterkt budskap.</sterk></kroppen></HTML>";
MSG. IsBodyHtml = sann;

foreach (streng aFile i NIPFD. GetAttachmentNamesAndLocations())
{
    MSG. Attachments.Add(nye Vedlegg(aFile));
} // Tillegging av vedlegg.

SmtpClient klienten = nye SmtpClient("smtp.gmail.com");
klient.EnableSsl = sann;
klient.UseDefaultCredentials = USANN;
klient.Legitimasjon = loginInfo;
klient.Port = 587;
klient.EnableSsl = sann;
klient.Sende(MSG);

Noen viktige biter som bremset meg ned og andre observasjoner / notater:

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

  • Min gmail konto er konfigurert til å bruke SSL og det var ikke et problem.
  • Det er noen motstridende informasjon der ute på hvilken port som skal brukes. Jeg brukte port 587 og den arbeidet fin for meg.
  • I mitt tilfelle, Jeg trengte også å sende vedlegg. NIPFD objektet har en metode som vet hvor min vedlegg er. Den returnerer en fullstendig bane (f.eks. "c:\tempattachment1.jpg". I min test, Jeg hadde to vedlegg og de begge arbeidet fin.

Jeg brukte visual studio 2008 å skrive denne koden.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper: ,,,