Mga Archive ng kategorya: SharePoint Development

Isa Dahilan para sa "Ang isa o higit pang mga uri ng patlang ay hindi na-install nang maayos”

Ako ay paggawa ng isang maliit na sabunutan kahapon sa isang bahagi ng web na ang ng isang CAML query laban sa isang listahan.  Ginawa ko ang pagbabago, deployed ito at nakuha pindutin sa isang error:

May hindi inaasahang error na naganap sa Tatlong Araw Outlook Weather Forecast WebPart. Mangyaring makipag-ugnay sa system administrator. Isa o higit pang mga patlang na uri ay hindi na-install nang maayos. Pumunta sa pahina ng listahan ng mga setting upang tanggalin ang mga patlang na ito.

Ako ay nakaharap sa isa pang oddball isyu mas maaga kaya hindi ko agad ikonekta ang aking CAML query sa error na SharePoint ay pag-uulat sa akin.  Ginawa ko ang isang mabilis na paghahanap Bing at at Nakahanap ng ito kapaki-pakinabang na blog post sa pamamagitan ng Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Narito ang masamang query:

query.Query = "<Saan><At><Neq><FieldRef Pangalan = sa 'Abbr' /><Halaga type = 'text'>SFNY</Halaga><FieldRef Pangalan = sa 'Abbr' /><Halaga type = 'text'>SFIS</Halaga></Neq></At></Saan>";

Dito ito ay naayos na:

query.Query = "<Saan><At><Neq><FieldRef Pangalan = sa 'Abbr' /><Halaga type = 'text'>SFNY</Halaga></Neq><Neq><FieldRef Pangalan = sa 'Abbr' /><Halaga type = 'text'>SFIS</Halaga></Neq></At></Saan>";

Kaya, ang asal ng kuwento ay: tiyaking tama ang iyong CAML o maaari kang makakuha ng isang error ng oddball.

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

</dulo>

SharePoint 2010 Solusyon Stuck sa "paganahin” Katayuan

Ginamit ko PowerShell upang lumawak ang isang solusyon sa isang sakahan SharePoint (h / n:  Corey Roth at ang kanyang blog post). 

Pagkatapos ay nagpunta ako sa gitnang admin, access Setting System at pagkatapos ay "Pamahalaan ang mga solusyon sa sakahan" upang lumawak ang mga ito sa mga sakahan at sa aking (pagmata) masiraan ng loob, ito May stuck sa "paganahin".

Nakita ko na ang isyu na ito dumating up ng maraming beses sa MSDN forums, kaya ako ay medyo kinakabahan tungkol dito.  Ako naghanap sa paligid ng isang bit at natagpuan ito kapaki-pakinabang na artikulo (sa pamamagitan ng isang wari unattributed na tao mula sa http://www.resolutionsnet.co.uk/).  Kinansela ko ang pagpa-andar ng trabaho at kapag ako ay nag-click sa solusyon, Sinabi ito sa akin na matagumpay na ito ay deployed ang solusyon sa tatlong ng apat na server sa sakahan.

Nagpunta ako sa errant server, tumigil ang timer serbisyo at restart ito.  Windows server talagang Sinabi sa akin na ang serbisyo ay nabigong tumugon sa utos, kaya na nagsasabi sa akin na ito ay may sakit.

Oras na ito, kapag nagpunta ako pabalik sa gitnang admin, Ako ay upang lumawak ang mga ito na walang problema.

Sana ito bit ng impormasyon ay makakatulong sa ilan sa isang magbigkis isa sa mga araw.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Error ng Araw: "Hindi Idagdag ang tinukoy na Assembly ang GAC”

Ko na ay ang pakikipaglaban ng isang bit na may visual na talyer 2010 sa isang isang sp2010 solusyon at nakakakuha ng error na ito:

Error occurred in deployment step ‘Add Solution’: Mali: Ay hindi maaaring magdagdag sa tinukoy na pagpupulong sa pandaigdigang pagpupulong ng cache: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Pinuntahan ko ang GAC mismo (c:\windows pagpupulong) upang subukan at alisin at nakuha ng isang "file ginagamit" error.

Ginawa ko ang isang iisreset, Ako halos-download sysinternals, Pinahinto ko ang timer serbisyo sa mga serbisyo ... sa wakas, Sarado ko lang at muli visual talyer mismo at ako ay sa wakas makakapag upang isara ito.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Mabilis at madali: Debug vs 2010 Solusyon deployment

Visual Studio 2010 ulat hard-to-debug error habang deployment ilang beses.  Ang isang mabilis at madaling paraan upang gawin ang ilang mga napaka-magaspang pagde-debug ay upang ihagis ng iyong sariling pinangalanang eksepsiyon.  Visual Studio ay ipakita ang mga ito sa console output.

Isaalang-alang na ito bit ng code:

image

Kung ang tampok na ito ay scoped sa isang web application, Ang site ay null.  Kung ikaw subukan at isangguni ang isang ari-arian ng site, makukuha mo ang maliwanag na error:

Error occurred in deployment step ‘Add Solution’: Object reference hindi nakatakda sa isang halimbawa ng isang bagay.

Gayunman, kung magtapon ng isang bagong Exception at pumasa sa isang string sa constructor, kumuha ka ng isang bahagyang mas kapaki-pakinabang na mensahe:

image

Ito ay isang krudo pamamaraan, ngunit medyo mabilis at madaling.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Timer Job FeatureActivated At Feature Saklaw

Ako ay nagtatrabaho sa ilang mga code na kamay ang isang tao sa akin para sa isang trabaho timer.  Hindi niya ibinigay ang aktwal na tampok ng activation code kaya ako ay sumulat ito, siyempre.  Ininom ko ang bentahe ng Sikat na blog post ng Andrew Connell sa paksa.

Ako gumagamit ng Visual Studio 2010 and deployment kept failing with an error “Error occurred in deployment step ‘Add Solution’: Object reference hindi nakatakda sa isang halimbawa ng isang bagay. "

Ako ay pagkuha ng kanyang code masyadong literal.  Ako ay scoping ang tampok sa antas ng web application, tulad ng ipinapakita:

image

Bilang isang resulta, ang mga katangian na ay ipinadala sa ang receiver ay mula sa mga web application, hindi isang koleksyon ng site.  Sa katapusan, ang code ay ganito ang hitsura:

pampublikong override walang bisa ay FeatureActivated(SPFeatureReceiverProperties katangian)
{

    // Huwag gawin ang mga sumusunod sa web app scoped tampok, ito ay humantong sa kawalan ng pag-asa ngiti
    // SPSite site = properties.Feature.Parent bilang SPSite;

    SPWebApplication wa = properties.Feature.Parent sa bilang SPWebApplication;

    kung (wa == null) magtapon ng bagong Exception("webapp2 is null.");

    foreach (SPJobDefinition trabaho sa mga wa.JobDefinitions)
    {

        sumubok
        {
            kung (job.Name == List_JOB_NAME)

                job.Delete();
        }
        abutin (Exception e)
        {
            magtapon ng bagong Exception("marker 2");
        } // mahuli exception e
    }

    // install ng trabaho

    WeatherForecastTimerJob weatherForecastTimerJob =
        bagong WeatherForecastTimerJob(List_JOB_NAME, wa);

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

}

Ang mga pangunahing tumagal-layo ay na kapag ang tampok ay scoped sa isang web app, ang SPFeatureReceiverProperties na ipinapasa ng SharePoint sa iyong tampok na receiver ay may web app parameter antas.  Lumang Andrew blog entry Ipinagpapalagay ang scoped sa collection site.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Saan ang Microsoft.SharePoint.ApplicationPages.Administration.dll?

Ko ay kamay ng isang visual na proyekto talyer na sanggunian Microsoft.SharePoint.ApplicationPages.Administration.dll.  Ito ay kinuha sa akin ng isang maliit na habang upang mahanap ang mga ito at Akala ko Gusto kong ibahagi.  Sa aking kapaligiran, ito ay matatagpuan sa:

c:\programa file karaniwang file Microsoft ibinahaging web server extension 14 config adminbin

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

CodePlex Project – SP2010 Explorer

Bilang bahagi ng isang on-pagpunta pagsisikap upang malaman ang teknikal na mababang antas ng mga detalye ng SharePoint 2010, Ko na lumikha ng isang "SharePoint Explorer"Uri ng mga kasangkapan.  Ang ideya ay hindi bago.  Ginamit ko ang proyektong ito higit sa isang beses: http://sharepointexplorer.codeplex.com/.  Ang aking ideya ay upang lumikha ng isang SharePoint bersyon na gumagamit ng mga ang konektado bahagi web upang ipakita ang lahat ng mga mababang antas ng detalye na ang mga bagay na modelo ay maaaring magbigay. 

Ang blog post na ito ay nagsisilbi bilang parehong isang anunsyo ng proyekto pati na rin bilang isang tawag para sa mga boluntaryo.  Kung ikaw ay interesado sa nagtatrabaho sa proyektong ito, ipaalam sa akin sa pamamagitan ng email (galvin.paul @ gmail.com) at kami ay gumana ito.

Narito ang proyekto: http://sp2010explorer.codeplex.com/

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Paggawa sa Sa TreeNodeBinding sa ang ASP.NET Treeview Control

Ako ay nagtatrabaho sa kung ano ang Umaasa ako ay isang madaling-inilabas CodePlex proyekto na nagbibigay ng isang magandang integrated bit ng mga bahagi ng web na pakikipag-usap sa bawat isa sa pamamagitan ng koneksyon sa provider / mamimili para sa layuning pagsisiyasat ng isang SharePoint site sa ilalim ng pabalat.  (Ito ay tiyak ay tapos na bago, ngunit ito ay isang proyekto ng pag-aaral ng mas maraming bilang anumang bagay).  Ito ay nilalayong maging isang kapalit para sa mga bintana explorer view ng SharePoint 2010 dokumento aklatan.

Ang code ay karaniwang recursive tawag down na ang SPWeb at SPLists mula sa isang ibinigay na panimulang punto.  Ang bagay na ang lahat na traversing builds up ng isang XML string na mukhang isang bagay tulad nito:

<sitecollection url =’http://demo2010a:9090′>
 
<web
     pamagat = 'Kamusta World Sandbox' 
     Template = 'Ang isang site para sa mga koponan sa mabilis na ayusin, may-akda, at ibahagi ang impormasyon, BLAH BLAH BLAH>

     <listahan
        mga 'BCC_Health_Services_FAQs ng pamagat =’
        Template = 'CustomList’
       
listid =’http://demo2010a:9090/helloworldsandbox[Ibahagi ko]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</listahan>

     <listahan
        mga 'BCC_Notifications ng pamagat =' 
        Template = 'CustomList' 
        listid =’
http://demo2010a:9090/helloworldsandbox[Ibahagi ko]5a5a13d1-877c-41c0-9063-b9612be80d5e’>
     </listahan>

  </web>

</sitecollection>

Inaasahan ko upang linisin ang na XML bago ang lahat ay sinabi at tapos na.

Gusto kong makakuha ng ganap na impormasyon at sa isang control Treeview.  Hindi eksakto lupa mapanira bagay-bagay.

Ang hamon na Ininom ko ang sa dito ay upang ikonekta ang tree view sa isang XML ng control Data Source sa halip ng mano-mano pagbuo aking mga treenodes bilang ko bang tawirin ang tree.  Ginawa ko ito bahagyang dahil kusa ako ng paggawa ng mga bagay na mahirap sa aking sarili (ito ay isang proyekto ng pag-aaral pagkatapos ng lahat) at bahagyang dahil mayroon akong ang malabo paniwala na ito na gusali up ng mga nodes puno bilang ko tawirin tree isn'ta magandang ideya para sa pangmatagalang.

Ang problema sa diskarte na ito ay na ang mga kontrol ng Treeview ay hindi malaman tungkol sa mga mabuting katangian sa ang mga kagiliw-giliw na nodes tulad ng "listahan" o "web" kaya ito ay nagpapakita ng output na ito sa pamamagitan ng default:

 

image

Iyan ay hindi kapaki-pakinabang.  Ito ay kung saan ang TreeNodeBinding klase tumutulong.  Maaari ko bang gamitin ito upang sabihin sa Treeview control kung paano ito dapat kahulugan ng XML.  Narito ang isang halimbawa:

tnb = bagong TreeNodeBinding();
tnb.DataMember = "list"; // Ito ay ang mga label sa xml para sa isang site.
tnb.TargetField = "listid";
tnb.ValueField = "title";
tnb.ToolTipField = "Template";

Ang nagbubuklod ito ay nagsasabi sa treeview na kapag ito nahahanap <listahan> node sa ang XML, ilapat ang mga bindings para TargetField, ValueField at ToolTipField.  Sa maaaring app, mapa mga ito bilang mga sumusunod:

  • TargetField: Kapag ang isang tao pag-click sa isang node na halaga, ito ay kung ano ang makukuha mo para sa SelectedNode.Value.  Ito ay hindi nalilito sa ...
  • ValueField: Ito ay kung ano ang gusto mong Treeview ang upang ipakita sa mga gumagamit.
  • ToolTipField: Ang halaga mula sa XML na gusto mo bilang isang Tooltip.

Magdagdag na TreeNodebinding sa DataBindings ng tree view at makakuha ka ng output tulad nito:

 

image

Kukunin ko na magkaroon ng higit sa lahat ng ito habang patuloy ako sa proyekto at sa huli ay ilagay ito sa Codeplex.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Kumokonekta sa mga Filter ng Teksto ng Patlang sa iyong Pasadyang Web Bahagi

Nais kong makatanggap ng impormasyon mula sa isang Patlang ng Teksto ng filter sa SharePoint 2010 sa aking pasadyang bahagi ng web.  Ako sinubukan gamit ang MSDN artikulo na ito batayan ngunit ang artikulo ay alinman sira o lang ako sa hindi pagsunod ito nang tama.

Isang kaunti pa naghahanap ng naka-up Mike Smith MSDN kontribusyon dito (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

May isang pulutong ng mga bagay-bagay out doon sa connectable mga bahagi ng web ngunit Mike ng artikulo ay bilang simpleng bilang ito ay makakakuha ng.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Mabilis at madali: Magpadala ng Email Paggamit ng Gmail SMTP Server sa. NET C #

Ito ay hindi eksakto ng isang bagong paksa, ngunit kapag ako ay kinakailangan na gawin ito, I found a lot of “why won’t this work for me” and not too many direct answers. I hope someone finds this useful.

Ang mga sumusunod na piraso ng code ay magpadala ng email gamit ang aking sariling gmail account upang gawin ito, kabilang ang mga attachment:

paggamit System.Net.Mail;
paggamit System.Net;

NetworkCredential loginInfo = bago NetworkCredential("[Aking Gmail ID]", "[Aking Gmail Password]");
MailMessage msg = bago MailMessage();
msg.From = bago MailAddress("[M Gmail Id]@ Gmail.com");
msg.To.Add(bago MailAddress("paul.galvin@arcovis.com"));
msg.Subject = "Test infopath dev subject";
msg.Body = "<html><katawan><malakas>Ang isang malakas na mensahe.</malakas></katawan></html>";
msg.IsBodyHtml = totoo;

foreach (pisi aFile sa NIPFD.GetAttachmentNamesAndLocations())
{
    msg.Attachments.Add(bago Pagkakabit(aFile));
} // Pagdaragdag ng mga attachment.

SmtpClient client = bago SmtpClient("smtp.gmail.com");
client.EnableSsl = totoo;
client.UseDefaultCredentials = hindi totoo;
client.Credentials = loginInfo;
client.Port = 587;
client.EnableSsl = totoo;
client.Send(msg);

Ang ilang mga susi piraso na pinabagal akin down at iba pang mga obserbasyon / mga tala:

  • Ang unang linya na lumilikha ang loginInfo bagay na kailangang gamitin ang gmail ID Nakuha ang "@ Gmail.com". Kaya, kung ang aking gmail email address ay "Sharepoint@gmail.com"At ang aking password ay" xyzzy "pagkatapos linya ang magiging itsura:

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

  • Ang aking gmail account ay naka-set up upang gamitin ang SSL at na ay hindi isang problema.
  • There is some conflicting information out there on what port to use. I used port 587 at ito ay nagtrabaho fine para sa akin.
  • Sa aking kaso, 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, Mayroon akong dalawang mga attachment at sila ang parehong nagtrabaho fine.

Ginamit ko ang visual studio 2008 upang isulat ang code na ito.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Technorati Tags: ,,,