Kategorija Arhiva: SharePoint razvoj

Jedan od razloga za "jednu ili više vrsta polja nije ispravno instaliran”

Bio sam malo uštinuti jučer na web-dio koji radi na CAML upita protiv popisa.  Sam napravio promjenu, ga koriste i dobio pogodak s pogreškom:

Neočekivana pogreška u tri dana Outlook Vremenska prognoza WebPart. Molimo obratite se administratoru sustava. Jedan ili više vrsta polja nisu pravilno instaliran. Idi na stranicu Postavke popisa za brisanje tih polja.

Bio sam pred drugi otkačen pitanje ranije pa nisam odmah povezati CAML upit sa SharePoint pogreške koja je izvještavanje za mene.  Ja sam brzo pretraživanje i bing i pronašli ovaj koristan blog post po Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Ovdje je loše upit:

query.Query = "<Gdje><I><Neq><FieldRef Ime = 'abbr' /><Vrijednost Type = 'Tekst'>SFNY</Vrijednost><FieldRef Ime = 'abbr' /><Vrijednost Type = 'Tekst'>SFIS</Vrijednost></Neq></I></Gdje>";

Evo to je fiksna:

query.Query = "<Gdje><I><Neq><FieldRef Ime = 'abbr' /><Vrijednost Type = 'Tekst'>SFNY</Vrijednost></Neq><Neq><FieldRef Ime = 'abbr' /><Vrijednost Type = 'Tekst'>SFIS</Vrijednost></Neq></I></Gdje>";

Tako, Pouka priče je: provjerite je li vaš CAML točna ili ste svibanj dobiti otkačen pogrešku.

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

</kraj>

SharePoint 2010 Rješenje zaglavi u "Implementacija” Status

Koristio sam PowerShell za implementaciju rješenja na SharePoint farmi (h / t:  Corey Roth i njegov blog post). 

Zatim sam otišao u središnjem admin, pogledana System Settings, a zatim "Upravljanje gospodarskih rješenja" da ga rasporediti na farmi i na moje (blagi) zastrašiti, je zaglavio u "uvođenju".

Vidio sam taj problem doći do mnogo puta na MSDN forumima, tako da sam bio prilično nervozan o tome.  JA traženje okolo malo i pronašli ovaj koristan članak (je naizgled unattributed osobe iz http://www.resolutionsnet.co.uk/).  Sam otkazao implementacije posao i kad sam kliknuo na rješenje, to mi je rekao da je uspješno implementirao rješenje za tri od četiri poslužitelja u farmi.

Otišao sam krivog poslužitelju, zaustavio timera uslugu i ponovno.  Windows Server zapravo mi je rekao da usluga nije uspio odgovoriti na naredbe, tako da mi kaže da je bio bolestan.

Ovaj puta, kad sam se vratio u središnji admin, Sam bio u mogućnosti to uvesti bez problema.

Nadam se da ovo malo informacija pomoći će neki u BIND jedan od dana.

</kraj>

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

Pogreška Dana: "Ne možete dodati određenu skupštinu na GAC”

Ja sam se borio malo sa Visual Studio 2010 na jednom sp2010 rješenje i je uzimajući ovaj greška:

Error occurred in deployment step ‘Add Solution’: Pogreška: Ne možete dodati određeni sklop na globalnom montaže cachea: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Otišao sam u GAC sama (c:\windows skupština) pokušati ukloniti i dobio "datoteku u uporabi" pogreška.

Ja sam jedan iisreset, Skoro sam skinuti Sysinternals, Zaustavio sam timera uslugu usluga ... napokon, Upravo sam zatvorena i ponovno otvorena Visual Studio se i ja napokon moći zatvoriti.

</kraj>

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

Brzo i jednostavno: Debugging VS 2010 Rješenje Deployment

Visual Studio 2010 izvješća teško ispravljanje pogrešaka tijekom implementacije neki puta.  Brz i jednostavan način da to učinite neke vrlo grube ispravljanje pogrešaka je baciti svoje imenovane iznimke.  Visual Studio će ih prikazati u izlaznom konzole.

Razmotrimo ovaj malo koda:

image

Ako je ta značajka opfateno na web aplikacije, site će biti null.  Ako pokušate i upućivanje svojstvo stranice, ćete dobiti dvostruku pogrešku:

Error occurred in deployment step ‘Add Solution’: Objekta nije postavljena na instancu objekta.

Međutim, ako baciti novo iznimku i donijeti string u konstruktoru, ćete dobiti nešto više korisnih poruku:

image

To je sirovi tehnika, ali prilično brzo i jednostavno.

</kraj>

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

Timer Posao FeatureActivated i značajki Djelokrug

Radio sam s nekim kodom da je netko predao mi za timera posao.  On nije pod uvjetom da je stvarni broj značajki za aktivaciju pa sam morao napisati, naravno.  Sam iskoristio Andrew Connell poznati blog post na temu.

Im 'koristeći Visual Studio 2010 and deployment kept failing with an error “Error occurred in deployment step ‘Add Solution’: Objekta nije postavljena na instancu objekta. "

Ja sam uzimajući njegov kod previše doslovno.  Bio sam scoping značajka na razini web aplikacija, kao što je prikazano:

image

Kao rezultat toga, svojstva koje se šalju na prijemnik su iz web aplikacije, ne zbirke web-mjesta.  Na kraju, kod izgleda ovako:

javni nadjačavanje void FeatureActivated(SPFeatureReceiverProperties svojstva)
{

    // Nemojte učiniti sljedeće web app opfateno značajke, to dovodi do očaja Osmijeh
    // SPSite stranica = properties.Feature.Parent kao SPSite;

    SPWebApplication wa = properties.Feature.Parent kao SPWebApplication;

    ako (wa == null) baciti novo iznimku("Webapp2 je null.");

    foreach (SPJobDefinition posao u wa.JobDefinitions)
    {

        pokušati
        {
            ako (job.Name == List_JOB_NAME)

                job.Delete();
        }
        ulov (Iznimka e)
        {
            baciti novo iznimku("Marker 2");
        } // uhvatiti iznimka e
    }

    // instalirati posao

    WeatherForecastTimerJob weatherForecastTimerJob =
        Novi WeatherForecastTimerJob(List_JOB_NAME, wa);

    SPMinuteSchedule raspored = new SPMinuteSchedule();
    schedule.BeginSecond = 0;
    schedule.EndSecond = 59;
    schedule.Interval = 5;
    weatherForecastTimerJob.Schedule = raspored;
    weatherForecastTimerJob.Update();

}

Ključ uzeti-daleko je da kada je značajka opfateno na web app, su SPFeatureReceiverProperties da SharePoint prolazi na lice prijemnik ima web app na razini parametara.  Andrije stari blog entry pretpostavlja da je opfateno u zbirci web-mjesta.

</kraj>

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

Gdje je Microsoft.SharePoint.ApplicationPages.Administration.dll?

Sam predao Visual Studio projekt koji reference Microsoft.SharePoint.ApplicationPages.Administration.dll.  Trebalo mi je malo vremena da ga pronaći, a ja mislio bih podijeliti.  U mom okruženju, to se nalazi na:

c:\program files Common Files Microsoft Shared web server ekstenzije 14 config adminbin

</kraj>

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

Projekt CodePlex – SP2010 Explorer

Kao dio kontinuiranog napora za učenje tehničke niske razine pojedinosti SharePoint 2010, Ja sam stvorio "SharePoint Explorer"Vrsta alata.  Ideja nije nova.  Koristio sam ovaj projekt više od jednom: http://sharepointexplorer.codeplex.com/.  Moja ideja je stvoriti SharePoint verziju koja koristi povezane web dijelove pokazati sve low-level detalj koji objekt model može pružiti. 

Ovaj blog post služi i kao najava projekta, kao i poziv za volontere.  Ako ste zainteresirani za rad na ovom projektu, javite mi putem e-maila (galvin.paul @ gmail.com) a mi ćemo to riješiti.

Ovdje je projekt: http://sp2010explorer.codeplex.com/

</kraj>

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

Rad s TreeNodeBinding u kontrolu ASP.NET TreeView

Radio sam na ono što se nadam da će biti uskoro objavljen CodePlex projekt koji pruža lijep integrirani malo web dijelova pričaju jedni s drugima putem davatelja / potrošača priključcima za svrhu istraživanja SharePoint web-mjesta ispod pokrivača.  (To svakako nije učinjeno prije, ali to je učenje Projekt koliko bilo što drugo).  To je značilo da se zamjena za Windows Explorer pogled SharePoint 2010 dokument knjižnice.

Kod ima uobičajenu rekurzivni poziv dolje Spweb-ih i SPLists iz određenog polazište.  Objekt koji se sav taj poprijeko nakuplja XML string koji izgleda otprilike ovako:

<sitecollection url =’http://demo2010a:9090′>
 
<tkanje
     title = "Zdravo, svijete sandbox" 
     Predložak = 'stranica za timove brzo organizirati, autor, i zajedničko korištenje informacija, Bla bla bla ">

     <popis
        title = "BCC_Health_Services_FAQs’
        Predložak = 'CustomList’
       
listid =’http://demo2010a:9090/helloworldsandbox[razdvojnik]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</popis>

     <popis
        title = "BCC_Notifications ' 
        Predložak = 'CustomList' 
        listid =’
http://demo2010a:9090/helloworldsandbox[razdvojnik]5a5a13d1-877c-41c0-9063-b9612be80d5e’>
     </popis>

  </tkanje>

</sitecollection>

Ja očekujem da počistiti taj XML prije nego što je sve rekao i učinio.

Želim konačnici dobiti tu informaciju i u TreeView kontrolu.  Nije baš potresla stuff.

Izazov mi je ovdje bio spojiti stabla u XML izvora podataka kontrole umjesto ručno izgradnji moje treenodes kao što sam prošli stablo.  Ja sam to dijelom i zato sam namjerno izmišljam stvari teže na sebi (ovo je projekt učenja nakon svega) a dijelom i zato što imam ovu maglovitu ideju da gradi stablo čvorova kao što sam prošli stablo nije dobra ideja za dugoročno.

Problem s ovim pristupom je da Treeview kontrola ne zna o dobrim atributima na zanimljivoj čvorova poput "popisu" ili "Web" kako to pokazuje ovaj izlaz po defaultu:

 

image

To nije korisna.  Ovo je mjesto gdje TreeNodeBinding klase pomaže.  Ja to mogu upotrijebiti za reći TreeView kontrolu kako to treba tumačiti XML.  Evo primjer:

TNB = new TreeNodeBinding();
tnb.DataMember = "list"; // To je oznaka u XML za site.
tnb.TargetField = "listid";
tnb.ValueField = "title";
tnb.ToolTipField = "Template";

Ovo obvezujuće govori TreeView da kada utvrdi <popis> čvor u XML, primijeniti vezovi za TargetField, ValueField i ToolTipField.  U svibnju app, to karta na sljedeći način:

  • TargetField: Kada netko klikne na čvoru vrijednosti, to je ono što ćete dobiti za SelectedNode.Value.  To se ne smije miješati s ...
  • ValueField: To je ono što želite Treeview za prikaz na korisnika.
  • ToolTipField: Vrijednost iz XML-a koji želite kao tooltip.

Dodaj TreeNodebinding da se prikazu stabla je DataBindings i dobiti izlaz ovako:

 

image

Morat ću više na sve to, kao što sam i dalje na projektu, a na kraju mu je ovo gore na Codeplex.

</kraj>

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

Spajanje Filteri tekstualno polje Custom web-dijela

Ja sam htjela da se dobiju informacije iz teksta filter polja u sustavu SharePoint 2010 u moje prilagođeni web-dijela.  Pokušao sam pomoću to MSDN članak kao temelj, ali je članak ili ne valja ili sam samo ne to nakon točno.

Malo više u potrazi okrenut prema gore Mike Smith-a MSDN doprinos ovdje (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Postoji puno stvari vani na web spojiti dijelove, ali Mike je članak je kao jednostavan kao što dobiva.

</kraj>

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

Brzo i jednostavno: Pošaljite e-poštu koristite Gmail SMTP poslužitelja u. NET C #

To nije točno novu temu, ali kad mi je trebalo to učiniti, I found a lot of “why won’t this work for me” and not too many direct answers. I hope someone finds this useful.

Sljedeći malo koda će poslati e-mail koristeći svoj Gmail račun za to učiniti, uključujući privitke:

pomoću System.Net.Mail;
pomoću System.Net;

NetworkCredential loginInfo = novi NetworkCredential("[My Gmail ID]", "[My Gmail Password]");
MailMessage msg = novi MailMessage();
msg.From = novi MailAddress("[M Gmail Id]@gmail.com");
msg.To.Add(novi MailAddress("paul.galvin@arcovis.com"));
msg.Subject = "Test infopath dev subject";
msg.Body = "<html><tijelo><strong>A strong message.</strong></tijelo></html>";
msg.IsBodyHtml = pravi;

foreach (niz aFile u NIPFD.GetAttachmentNamesAndLocations())
{
    msg.Attachments.Add(novi Attachment(aFile));
} // Adding attachments.

SmtpClient client = novi SmtpClient("smtp.gmail.com");
client.EnableSsl = pravi;
client.UseDefaultCredentials = lažan;
client.Credentials = loginInfo;
client.Port = 587;
client.EnableSsl = pravi;
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". Tako, if my gmail email address is “sharepoint@gmail.com” and my password is “xyzzy” then the line would look like:

NetworkCredential loginInfo = novi 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.
  • U mom slučaju, I also needed to send attachments. That NIPFD object has a method that knows where my attachments are. It’s returning a fully path (e.g. “c:\temp\attachment1.jpg”. In my test, I had two attachments and they both worked fine.

I used visual studio 2008 to write this code.

</kraj>

Pretplatite se na moj blog.

Slijedite me na Twitter-u http://www.twitter.com/pagalvin

Technorati Tags: ,,,