kategorie Argief: SharePoint Ontwikkeling

Een van die redes vir "Een of meer veldtipes is nie behoorlik geïnstalleer”

Ek was besig om 'n klein tweak gister na 'n web deel wat 'n CAML navraag teen 'n lys nie.  Ek het die verandering, ontplooi en het getref met 'n fout:

'N Onverwagse fout het voorgekom in die Drie Dag Outlook Weer Voorspelling Webpart. Kontak asseblief die stelseladministrateur. Een of meer veldtipes is nie behoorlik geïnstalleer. Gaan na die lys instellings hierdie velde te verwyder.

Ek is teenoor ander oddball kwessie vroeër so ek het nie dadelik my CAML navraag verbind met die fout wat SharePoint is verslagdoening aan my.  Ek het 'n vinnige die bing soek en het dit behulpsaam gevind blog post deur Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Hier is die slegte navraag:

Query.query = "<Waar><En><Neq><FieldRef Naam = "Abbr-/><Waarde Tipe = "teks">SFNY</Waarde><FieldRef Naam = "Abbr-/><Waarde Tipe = "teks">SFIS</Waarde></Neq></En></Waar>";

Hier is vasgestel:

Query.query = "<Waar><En><Neq><FieldRef Naam = "Abbr-/><Waarde Tipe = "teks">SFNY</Waarde></Neq><Neq><FieldRef Naam = "Abbr-/><Waarde Tipe = "teks">SFIS</Waarde></Neq></En></Waar>";

So, die morele van die storie is: maak seker jou CAML korrek is, of jy kan 'n oddball fout.

Skryf in op my blog.

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

</einde>

SharePoint 2010 Oplossing Vasgevang in "die implementering van” Status

Ek gebruik PowerShell 'n oplossing vir 'n SharePoint plaas te ontplooi (h / t:  Corey Roth en sy blog post). 

Ek het toe na die sentrale admin, Stelsel Stellings en dan "Bestuur plaas oplossings" om dit te sit op die plaas en my (effense) ontsteltenis, dit vasgeval het in "ontplooi".

Ek het gesien dat hierdie kwessie kom baie keer op die MSDN forums, so ek was redelik senuweeagtig daaroor.  Ek het gesoek om 'n bietjie en het gevind dat hierdie nuttige artikel (deur 'n skynbaar unattributed persoon van http://www.resolutionsnet.co.uk/).  Ek het die ontplooiing werk gekanselleer en toe ek gekliek het in die oplossing, dit het my vertel dat dit suksesvol ontplooi het die oplossing vir drie van die vier bedieners op die plaas.

Ek het aan die dwalende bediener, die timer diens gestop en weer.  Windows Server eintlik het my vertel dat die diens versuim om te reageer op die bevel, sodat my vertel dat dit siek was.

Hierdie keer, toe ek terug na die sentrale admin, Ek was in staat om dit te sit nie 'n probleem.

Hopelik sal hierdie bietjie van die info sal help om in 'n bind een van die dae.

</einde>

Skryf in op my blog.

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

Fout van die Dag: "Kan nie by die gespesifiseerde Vergadering aan die GAC”

Ek het die stryd teen 'n bietjie met Visual Studio 2010 op 'n sp2010 oplossing en is om hierdie fout:

Error occurred in deployment step ‘Add Solution’: Fout: Kan nie voeg die gespesifiseerde vergadering aan die globale vergadering kas: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Ek het aan die GAC self (c:\windows vergadering) om te probeer en te verwyder, en het 'n lêer in gebruik "Fout.

Ek 1 iisreset het, Ek het amper afgelaai sysinternals, Ek het ook die timer diens in dienste ... uiteindelik, Ek het nou net gesluit en heropen Visual Studio en ek uiteindelik in staat was om dit uit te sluit.

</einde>

Skryf in op my blog.

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

Vinnige en maklike: Ontfouting VS 2010 Oplossing Ontplooiing

Visual Studio 2010 verslae hard-to-debug foute tydens ontplooiing n paar keer.  'N vinnige en maklike manier om 'n paar baie rowwe debugging te doen, is om jou eie naam van uitsonderings te gooi.  Visual Studio sal hulle wys in die uitset konsole.

Oorweeg dit bietjie van die kode:

image

Indien hierdie funksie is scoped aan 'n web toepassing, Die site sal leeg is.  As jy probeer en 'n eiendom van die werf verwys, kry jy die dubbelsinnige fout:

Error occurred in deployment step ‘Add Solution’: Object verwys nie na 'n geval van 'n voorwerp.

Egter, as 'n nuwe uitsondering gooi en trek 'n tou aan die konstruktor, jy kry 'n effens meer bruikbaar boodskap:

image

Dit is 'n ru-tegniek, maar redelik vinnig en maklik.

</einde>

Skryf in op my blog.

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

Timer Job FeatureActivated En Feature Scope

Ek werk met 'n paar kode dat iemand aan my oorhandig vir 'n timer werk.  Hy het nie die werklike funksie aktivering kode so ek moes dit om te skryf, van die kursus.  Ek het voordeel van Andrew Connell se beroemde blog boodskap oor die onderwerp.

Ek gebruik Visual Studio 2010 and deployment kept failing with an error “Error occurred in deployment step ‘Add Solution’: Object verwysing nie ingestel na 'n geval van 'n voorwerp. "

Ek was sy kode te letterlik.  Ek was bestekopname die funksie na die vlak van die web-program, soos aangedui:

image

As 'n gevolg, die eienskappe wat aan die ontvanger gestuur word, is van die web-program, nie 'n webwerf versameling.  Op die ou end, die kode lyk soos hierdie:

openbare ignoreer nietig FeatureActivated(SPFeatureReceiverProperties eienskappe)
{

    // Doen nie die volgende web artikels scoped funksies, dit lei tot wanhoop Smile
    // SPSite webwerf = properties.Feature.Parent as SPSite;

    SPWebApplication wa = properties.Feature.Parent as die SPWebApplication;

    indien (wa == null) gooi nuwe Uitsondering("Webapp2 is leeg.");

    foreach (SPJobDefinition werk in wa.JobDefinitions)
    {

        probeer
        {
            indien (job.Name == List_JOB_NAME)

                job.Delete();
        }
        vang (Uitsondering e)
        {
            gooi nuwe Uitsondering("Merker 2");
        } // vang uitsondering e
    }

    // installeer die werk

    WeatherForecastTimerJob weatherForecastTimerJob =
        nuwe WeatherForecastTimerJob(List_JOB_NAME, wa);

    SPMinuteSchedule skeduleer = nuwe SPMinuteSchedule();
    schedule.BeginSecond = 0;
    schedule.EndSecond = 59;
    schedule.Interval = 5;
    weatherForecastTimerJob.Schedule = skedule;
    weatherForecastTimerJob.Update();

}

Die sleutel wegneem-is dat wanneer die funksie is scoped aan 'n web artikels, die SPFeatureReceiverProperties wat SharePoint gaan jou funksie ontvanger web artikels vlak parameters.  Andrew se ou blog inskrywing aanvaar dit is scoped aan die werf versameling.

</einde>

Skryf in op my blog.

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

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

Ek is oorhandig 'n visuele studio projek wat verwysings Microsoft.SharePoint.ApplicationPages.Administration.dll.  Dit het my 'n bietjie tyd om dit te vind en ek het gedink ek wil deel.  In my omgewing, Dit is geleë op:

c:\Program Files Common Files Microsoft Shared Web Server Extensions 14 config adminbin

</einde>

Skryf in op my blog.

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

CodePlex Project – SP2010 Explorer

As deel van 'n deurlopende poging om die tegniese lae vlak besonderhede van die SharePoint te leer 2010, Ek het 'n "SharePoint Explorer"Aard van die instrument.  Die idee is nie nuut nie.  Ek het hierdie projek gebruik om meer as een keer: http://sharepointexplorer.codeplex.com/.  My idee is om 'n SharePoint weergawe wat gebruik verbind web dele al die lae-vlak van detail dat die voorwerp model kan verskaf om te wys te skep. 

Hierdie blog boodskap dien as beide 'n aankondiging van die projek sowel as 'n oproep vir vrywilligers.  As jy belangstel in die werk aan hierdie projek, laat weet my via e-pos (galvin.paul @ gmail.com) en ons sal dit uit te werk.

Hier is die projek: http://sp2010explorer.codeplex.com/

</einde>

Skryf in op my blog.

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

Werk met TreeNodeBinding in die ASP.NET boomaansig Control

Ek werk op wat ek hoop sal binnekort vrygestel word CodePlex projek wat 'n mooi geïntegreerde bietjie web dele met mekaar te praat via die verskaffer / verbruiker verbindings vir die doel van die ondersoek van 'n SharePoint plek onder die komberse.  (Dit het beslis voorheen gedoen, maar dit is 'n leer-projek soveel as enigiets anders).  Dit is bedoel om 'n plaasvervanger vir die Windows Explorer siening van SharePoint 2010 dokument biblioteke.

Die kode het die gewone rekursiewe oproep af die SPWeb-'s en SPLists van 'n beginpunt.  Die voorwerp wat nie alles wat polygonisatie bou voort op 'n XML-string wat lyk iets soos hierdie:

<sitecollection url =’http://demo2010a:9090′>
 
<web
     title = "Hello World Sandbox ' 
     Sjabloon = "'n plek vir spanne om vinnig te organiseer, skrywer, en deel van inligting, Blah blah blah>

     <lys
        title = "BCC_Health_Services_FAQs’
        Sjabloon = "CustomList’
       
listid =’http://demo2010a:9090/helloworldsandbox[Ek deel]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</lys>

     <lys
        title = "BCC_Notifications" 
        Sjabloon = "CustomList 
        listid =’
http://demo2010a:9090/helloworldsandbox[Ek deel]5a5a13d1-877c-41c0-9063-b9612be80d5e’>
     </lys>

  </web>

</sitecollection>

Ek verwag om skoon te maak dat die XML voor al gesê en gedoen word.

Ek wil om uiteindelik daardie inligting kry en in 'n boom beheer.  Nie presies die aarde verbryseling dinge.

Die uitdaging wat ek hier het, was die verkenner te koppel aan 'n XML-data Bron beheer in plaas van die hand opbou my treenodes as ek deurkruis die boom.  Ek het dit deels omdat ek doelbewus dinge maak harder op myself (hierdie is 'n projek na alle) en deels omdat ek hierdie vae idee dat die opbou van boom nodes as ek deurkruis die boom nie 'n goeie idee vir die lang termyn.

Die probleem met hierdie benadering is dat die boomaansig beheer nie weet nie oor die goeie eienskappe op die interessante nodusse soos "lys" of "web" nie so dit wys hierdie produksie by verstek:

 

image

Dit is nie nuttig nie.  Dit is waar die TreeNodeBinding klas help.  Ek kan gebruik om die boomaansig beheer te vertel hoe dit die XML moet interpreteer.  Hier is 'n voorbeeld:

TNB = nuwe TreeNodeBinding();
tnb.DataMember = "Lys"; // Dit is die etiket in die XML vir 'n webwerf.
tnb.TargetField = "listid";
tnb.ValueField = "title";
tnb.ToolTipField = "Sjabloon";

Hierdie binding vertel die boomaansig dat wanneer dit vind 'n <lys> node in die XML, die toepassing van die bindings vir TargetField, ValueField en ToolTipField.  In Mei inligting, hierdie kaart soos volg::

  • TargetField: Wanneer iemand druk op 'n node waarde, dit is wat jy kry vir SelectedNode.Value.  Dit is nie verwar word met ...
  • ValueField: Dit is wat jy wil hê die boomaansig te vertoon aan die gebruiker.
  • ToolTipField: Die waarde van die XML wat jy wil as 'n Tooltip.

Byvoeg dat TreeNodebinding aan die verkenner se DataBindings nie en jy kry die uitvoer soos hierdie:

 

image

Ek sal meer op al hierdie dinge as ek bly op die projek en uiteindelik sit dit op Codeplex.

</einde>

Skryf in op my blog.

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

Connecting Text Field filters jou persoonlike Web Deel

Ek wou inligting ontvang van 'n teks veld filter in SharePoint 2010 in my persoonlike web deel.  Ek het probeer om met behulp van hierdie MSDN artikel as 'n basis, maar die artikel is of gebreek of ek nie net na aanleiding van dit korrek.

'N bietjie meer soek opgedaag het Mike Smith se MSDN bydrae hier (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Daar is 'n baie goed daar buite op aansluit web dele, maar Mike se artikel is so eenvoudig soos dit kry.

</einde>

Skryf in op my blog.

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

Vinnige en maklike: Stuur e-pos gebruik Gmail SMTP-bediener in. NET C #

Dit is nie juis 'n nuwe onderwerp, maar toe ek dit nodig gehad het om te doen, I found a lot of “why won’t this work for me” and not too many direct answers. I hope someone finds this useful.

Die volgende stukkie van die kode sal stuur 'n e-pos met my eie Gmail-rekening om dit te doen, insluitend aanhegsels:

die gebruik van System.Net.Mail;
die gebruik van System.Net;

NetworkCredential loginInfo = nuwe NetworkCredential("[My Gmail ID]", "[My Gmail Vergeet]");
Mailbericht msg = nuwe Mailbericht();
msg.From = nuwe Pos adres("[M Gmail-id]@ Gmail.com");
msg.To.Add(nuwe Pos adres("paul.galvin@arcovis.com"));
msg.Subject = "Test infopath dev subject";
msg.Body = "<html><liggaam><sterk>'N sterk boodskap.</sterk></liggaam></html>";
msg.IsBodyHtml = waar;

foreach (string AFile in NIPFD.GetAttachmentNamesAndLocations())
{
    msg.Attachments.Add(nuwe Beslaglegging(AFile));
} // Voeg aanhegsels.

SmtpClient kliënt = nuwe SmtpClient("smtp.gmail.com");
client.EnableSsl = waar;
client.UseDefaultCredentials = valse;
client.Credentials = loginInfo;
client.Port = 587;
client.EnableSsl = waar;
client.Send(msg);

A few key bits that slowed me down and other observations / notes:

  • The first line that creates the loginInfo object needs to use the gmail ID stripped of “@gmail.com". So, if my gmail email address is “sharepoint@gmail.com” and my password is “xyzzy” then the line would look like:

NetworkCredential loginInfo = nuwe NetworkCredential("sharepoint", "Xyzzy");

  • My gmail account is set up to use SSL and that wasn’t a problem.
  • There is some conflicting information out there on what port to use. I used port 587 and it worked fine for me.
  • In my geval, I also needed to send attachments. That NIPFD object has a method that knows where my attachments are. It’s returning a fully path (bijv. “c:\temp\attachment1.jpg”. In my test, Ek het twee aanhegsels en hulle albei werk goed.

Ek gebruik van Visual Studio 2008 hierdie kode te skryf.

</einde>

Skryf in op my blog.

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

Technorati Tags: ,,,