Buwanang Archive: Mayo 2011

PerformancePoint at Error 33494

Isa ng aking mga kliyente na tinatawag na ngayon kapag ang kanilang PerformancePoint kapaligiran (sa SharePoint 2010) Nasira.  Isa sa mga server ng app sa ang mga sakahan ay mababa sa disk space.  Habang Pagtugon na, client uninstall "masyadong maraming" at ang PP bagay-bagay ang lahat tumigil gumagana.  Iba't-ibang bahagi ng web ay magpapakita ng "May hindi inaasahang error na naganap. Mali 33494. Karagdagang mga detalye ay naka-log para sa iyong administrator ":

image

Tumingin ako ang error at hindi mahanap ang anumang partikular na sa "Error 33,494" ngunit ito MSDN forums-post ay helpful: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Natagpuan ko ang ADOMD.NET dito bilang isang bahagi sa ang SQL Server 2008 Feature Pack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(i-click upang palakihin)

Download ko at naka-install na at naayos na ang lahat.

Tingin ko ito ay isang magandang uri oddball ng error, ngunit kung pinindot ninyo ito, hindi bababa sa ikaw ay may isang pagpipilian.

</dulo>

Mag-subscribe sa aking blog.

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

Lists.asmx, GetListItems at folder

Ako ay paggawa ng ilang pananaliksik para sa isang tao ngayon sa paligid list.asmx web serbisyo na ibinigay bilang bahagi ng SharePoint 2010 (at mas maaga).  Siya ay upang makakuha ng listahan ng mga item sa folder ng ugat (kabilang ang mga pangalan ng mga sub-folder), ngunit hindi maaaring makakuha ng mga item sa sub-folder.  Ko ng ilang mga naghahanap sa paligid sa internets at ito ay isang nakakagulat na karaniwang tanong.  Pa, Hindi ako maaaring makakuha ng isang magandang sagot sa simpleng tanong, "Kung alam ko ang folder, paano ko makukuha ang mga item sa folder?"  Upang maging matapat, Hindi ko subukan ang lahat na mahirap dahil ko na nais na malaman ang isang ito sa aking sarili para sa isang habang ngiti.

Upang itakda ang up, Lumikha ako ng isang site na pinangalanang "Blogging sitwasyon" at isang pasadyang listahan na pinangalanang "Custom Listahan na may Sub Folder".  Ako pagkatapos nilikha folder na may pangalang:

  • Taon 2005
  • Taon 2006
  • Taon 2007

Ako ay nagdagdag ng ilang mga item sa ang "Taon 2006" na folder.  Ito ay kung ano ang tila:

image

Ang aking kaibigan ay hindi pagsulat ng C # code ngunit sa halip na paggamit ng Java, kaya ang SOAP sobre ay ano ang kanyang talagang kinakailangan.  Upang makakuha ng na, Sinulat ko isang bit ng jQuery at pagkatapos ay ginagamit ng fiddler upang makakuha ng aktwal na pag-uusap ng HTTP.

Narito ang kaugnay jQuery (Ko makopya ang code sa ibaba kung nais mong kopyahin / i-paste):

image

Sila unang susi ay upang isama ang parehong <queryOptions> at <QueryOptions> node.  Ang ikalawang key ay ang <Folder> node ay isang URL na kung saan ang client ay may access.

Maaaring may iba pang mga paraan upang makakuha ng ito, ngunit ito nagtrabaho na rin para sa akin kapag gumagamit ng jQuery.

Narito ang ang SOAP sobre para sa itaas:

<soapenv:Sobre xmlns:soapenv =’http://schemas.xmlsoap.org / sabon / sobre /’>                
  <soapenv:Katawan>
    <GetListItems xmlns =’
http://schemas.microsoft.com / sa sharepoint / sabon /’>
      <listname>Pasadyang Listahan na may Sub Folder</listname>
      <viewFields>  
        <ViewFields>
          <FieldRef Pangalan = 'Pamagat’ />
          <FieldRef Pangalan = 'EncodedAbsUrl ang’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Folder>
http://demoserver1/Blogging Sitwasyon / listahan / Custom Listahan na may Sub Folder / Taon 2006</Folder>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Katawan>
</soapenv:Sobre>

Ang isang pulutong ng mga halimbawa at discussion sa paligid na ito na humantong ako sa naniniwala na ang lahat ng kailangan ko ay <QueryOptions> at tukuyin ang isang pangalan ng folder.  Sa akin, Kailangan ko sa parehong pambalot na ito sa loob <queryOptions> pati na rin tukuyin ang isang ganap na kwalipikadong URL para sa <Folder> buko.

Narito ang jQuery AJAX setup:

$(dokumento).nakahanda(tungkulin() {
       ay soapEnv =
           "<soapenv:Sobre xmlns:soapenv =’http://schemas.xmlsoap.org / sabon / sobre /’> \
               <soapenv:Katawan> \
                    <GetListItems xmlns =’http://schemas.microsoft.com / sa sharepoint / sabon /’> \
                       <listname>Pasadyang Listahan na may Sub Folder</listname> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef Pangalan = 'Pamagat’ /> \
                              <FieldRef Pangalan = 'EncodedAbsUrl ang’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Folder>http://demoserver1/Blogging Sitwasyon / listahan / Custom Listahan na may Sub Folder / Taon 2006</Folder> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Katawan> \
           </soapenv:Sobre>";

</dulo>

Mag-subscribe sa aking blog.

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

Lists.asmx, GetList at "VALUE ay hindi maaaring maging null”

Natuklasan ko na ngayon ang GetList() pamamaraan sa lists.asmx web serbisyo ay upang matawag napaka mabuti o ito ay madaling kapitan ng sakit upang ihagis ng isang mahiwaga "Halaga ay hindi maaaring maging null" sa pagbubukod (at na ipagpalagay na maaari kang makakuha ng nakalipas na ang kahit na mas masahol pa generic na mensahe ng error, “Exception of type ‘Microsoft.SharePoint.SoapServer.SoapServerException’ ay itinapon. ")  Tiyakan, Nakita ko na hindi ka maaaring magbigay ng anumang uri ng unlapi sa GetList pamamaraan.  Ang mga sumusunod na snippet jQuery ay naglalarawan ng point:

image

Kung gagawin mo na, web mga serbisyo ay tumutugon sa "Halaga ay hindi maaaring maging null" bilang per ito fiddler-ibinigay HTTP transcript:

<?xml version="1.0" encoding="utf-8"?>
  <sabon:Sobre
     xmlns:sabon ="
http://schemas.xmlsoap.org / sabon / sobre /"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd ="
http://www.w3.org/2001/XMLSchema">

  <sabon:Katawan>
    <sabon:Kasalanan>
      <faultcode>sabon:Server</faultcode>
      <faultstring>
        Exception of type ‘Microsoft.SharePoint.SoapServer.SoapServerException’ ay itinapon.
      </faultstring>
      <detalye>
        <error string xmlns ="
http://schemas.microsoft.com / sa sharepoint / sabon /">
Halaga ay hindi maaaring maging null.
        </errorstring>
      </detalye>
    </sabon:Kasalanan>
  </sabon:Katawan>
</sabon:Sobre>

Talaga, malamang na hindi nais na magdagdag ng "S0" prefix sa iyong sariling, ngunit ang ilang mga tool ay madaling kapitan ng sakit na gawin ito (tulad ng Eclipse).

Ito ay ang lahat ng mga mas nakalilito / nakakadismaya dahil ang iba pang mga pamamaraan tiisin prefixes.  Halimbawa, ang GetListCollection pamamaraan ay hindi tututol kung ito ay nai-prefix, kahit na may mga bagay na walang kapararakan prefix tulad ng "xyzzy":

image

Ang "halaga ay hindi maaaring maging null" tila medyo pangkaraniwan sa lists.asmx kaya sana ito ay makakatulong sa isang tao out sa hinaharap.

</dulo>

Mag-subscribe sa aking blog.

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

Endlessly Nesting <div> Tag at jQuery

Ito tila tulad ng isang paksa oddball, Hindi ako sigurado ito ay talagang nagkakahalaga ng pag-blog tungkol sa, ngunit na hindi kailanman tumigil sa akin bago, kaya dito kami pumunta ngiti

Ako nagtatrabaho out sa isang proyekto kung saan ako kumukuha ng ilang mga data mula sa isang paghahanap, packaging up ito sa isang XML mensahe at pagkatapos ay na XML sa huli ay transformed sa HTML sa pamamagitan ng XSLT.  Mayroong maraming mga jQuery kasangkot, isa bit na kung saan ipinapatupad ng ilang mga pag-andar tabbing.  Kapag nag-click ka sa isang tab (talaga, isang <div>), jQuery invokes. itago() at. palabas() sa iba't-ibang mga divs (ang paunang pag-load ng pahina Dina-download ang lahat ng mga nilalaman sa gayon walang mga postbacks sa kasong ito).

Ang isang grupo ng mga oras ang nakalipas, ang tab paglipat logic nagsimulang kumilos erratically at hindi ito ay magpapakita ng isa sa aking mga tab.  Ako sa huli sinubaybayan ito pababa sa ang katunayan na ang internet explorer (kahit) naisip na ang <div> mga tag nested malayo, malayo mas malalim kaysa intended.The developer toolbar ay magpapakita ng:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           ..............................
                   </div>  <-Sa wakas ay nagpapakita ng ito ay sarado ang lahat ng paraan ang down dito!

Kaya, kung ginawa ko ang isang $("# Tab1Content").itago(), Gusto ko ring itago Tab2 at hindi ko maaaring magpakita Tab2 kung hindi ko ring ipakita Tab1.  Ako kopyahin at ilagay ang code hanggang sa visual studio at ito ay nagpakita ng lahat ng lining ang div up ni mabuti, tulad lang nila na ipagpalagay na paggawa, naghahanap ng ganito:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

Matalo ko ang aking ulo laban sa mga pader para sa isang habang at napansin na sa aktwal na code ng HTML ay bumubuo ng maraming laman <div> mga tag, katulad:

<katawan>

  <div id = "Tab1Content">

    <div id = "ROW1" />
    <div id = "ROW2" />

  </div>

  <div id = "Tab2Content">

    <div id = "ROW1" />
    <div id = "ROW2" />

  </div>

</katawan>

(Sa itaas ay waaaaaaaaaaaay oversimplified.  Ang walang laman div tag ay lubos wastong. Ang ilan sa aking <div> mga tag ay puno ng mga nilalaman, ngunit marami pa ay hindi.  Ako ay dumating sa pagtanto na ang aking <xsl:para sa-bawat> mga kautusan ay nagpapalabas ng mga short-form na tag div kapag ang xsl:para-sa-bawat ay hindi 'makahanap ng anumang data.  Pinilit ako ng isang HTML komento sa output, tulad ng ipinapakita:

image

 

Pagkatapos kong gumawa niyan, lahat ng div ay ang naka-linya up mabuti at ang aking tab Paglipat nagsimula nagtatrabaho.

Tulad ng nakasanayan, Umaasa ako na ito ay tumutulong sa isang tao sa isang pakurot.

</dulo>

Mag-subscribe sa aking blog.

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

Mabilisang pag-aayos: "$ Resources Ang pangalan ng uri ng nilalaman ':ReportServerResources … hindi maaaring maglaman ng … mga espesyal na character”

Ako gumagasta ng ilang oras paglilinis up ng isang SharePoint 2010 site at ang isa sa mga isyu sa cleanup nauugnay sa isang corrupt / mali ang naka-install SQL Server Report Serbisyo isyu.  Ang isyu na lumitaw kapag ang isa sa aking mga kasamahan sinubukan upang i-save ang isang site bilang isang template at pagkatapos ay lumikha ng lumikha ng isang bagong site batay sa mga template na.  Ang operasyon save nagtrabaho fine, ngunit kapag siya ay sinubukan upang lumikha ng bagong site, SharePoint ipinapakita ang mga sumusunod na mensahe ng error:

Mali

$ Mga Mapagkukunan Ang nilalaman uri ng pangalan ':ReportServerResources,DataSourceContentTypeName;Hindi 'maaaring maglaman ng: \ / : * ? " # % < > { } | ~ & , dalawang magkakasunod na panahon (..), o espesyal na mga character tulad ng isang tab.

Narito ang isang screen cap:

 

image

Ako ay nagkaroon ng isang pagtingin sa mga uri ng nilalaman sa site at natagpuan na ito:

image

Yaong mga uri ng nilalaman ay malinaw na hindi malusog.

Isyu na ito ay tila upang makabuo ng maraming sa Internets at doon ay hindi mukhang maging isang solong pinagkaisahan sa kung paano malutas ito.  May nakita akong isang madaling gamitin na talahanayan na nai-map ang masamang nilalaman pangalan ng uri ng mahusay na mga pangalan ng uri ng nilalaman dito: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Ko nang manu-mano-update ang mga ito thusly:

image

(BrightStarr sa pangalan ay malinaw naman opsyonal, ngunit hindi ito maaaring makapinsala sa ngiti )

Ito pinapayagan sa akin upang lumikha ng isang bagong template at hindi masira ang anumang bagay sa iba pang mga site, kabilang ang ilang mga bagay-bagay PerformancePoint Server na isang ganap na naiibang mga pangkat ng mga tao ay nagtatrabaho sa.  Ako ay pagkatapos ay magagawang lumikha ng isang bagong site sa template.  Tagumpay!

Hindi ako sigurado na ito ay isang 100% solusyon, ngunit ito nakuha sa akin at sa lahat ng tao na kasangkot nakalipas na ito nakakainis na error.  Kung nalaman ko kahit ano bagong, Kukunin ko mag-post ng update.  Aking nerbiyos Nagmumula ang katunayan na ang mga pangalan na ito ay hindi dapat maging mali sa unang lugar at sa pamamagitan ng pag-aayos ng mga display name, Hindi ako ng pagpindot sa panloob na pangalan. 

</dulo>

Mag-subscribe sa aking blog.

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

Isa Dahilan para sa "Ang mga tagalikha ng kasalanan na ito ay hindi tukuyin ang isang Dahilan.”

Ko na na-paggawa ng maraming trabaho sa SharePoint paghahanap kani-kanina lamang at partikular ang KeywordQuery na klase, katangian at mga pamamaraan.

Kung nais sa iyo resulta ang itakda upang bumalik ang mga resulta sa itaas at lampas ang mga dati suspects (makikita dito), mong idagdag ito sa koleksyon SelectedProperties, tulad ng sa:

myKeywordQuery.SelectProperties.Add("xyzzy");

Maraming salamat at isang dulo ng sumbrero sa Corey Roth at ito sobrang sobra helpful post ng blog (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

Sa aking kaso, "Xyzzy" ay hindi talagang isang pinamamahalaang mga ari-arian.  Kapag idinagdag ko ito sa mga SelectedProperties pa rin, SharePoint threw isa sa aking paboritong kailanman runtime eksepsiyon:

"Ang lumikha ng kasalanan na ito ay hindi tukuyin ang isang Dahilan."

Gusto ko lalo na ang capital "R" sa Dahilan.  Ito iyan sa akin tulad ng. NET na katumbas ng "Mayroon akong walang bibig, at dapat ko mapasigaw."

</dulo>

Mag-subscribe sa aking blog.

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

Madaling gamitin Reference: Mga default Resulta mula sa KeywordQuery Search

Kapag pakiusapan mo ang Ipatupad() paraan sa isang KeywordQuery, Maaari kang lumikha ng isang ResultTable batay sa ResultType.RelevantResults.  Ang code snippet na ito ay naglalarawan kung ano ang ibig sabihin ko:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

Ang resultang talahanayan ay ang mga sumusunod na hanay ng impormasyon: 

WorkId
Ranggo
Pamagat
May-akda
Laki
Landas
Paglalarawan
Sumulat
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
Contentclass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Nakuha ko ito mula sa listahan ng SharePoint 2010 kapaligiran, enterprise edition.  Sana ito ay maging madaling-magamit na sa isang tao sa hinaharap.

</dulo>

Mag-subscribe sa aking blog.

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

Isa Dahilan para sa: "Nabigong kunin ang taksi file sa solusyon”

Habang nagtatrabaho sa isang visual na proyekto na bahagi ng web ng talyer ngayon, Ginawa ko ang isang menor de edad na re-org ng ilang mga file ay ilagay sa folder _layouts bilang bahagi ng proseso ng pagpa-andar. Tiyakan, Pangalanan ko ng isang js file mula sa "TypeAhead.js" sa "TypeAhead(luma).js "  Plano ko upang maalis ito sa lalong madaling panahon ng kanyang kahalili sa "TypeAhead.js" nagpapatunay tama.  Ito ay tumingin tulad nito:

image

Ito agad sanhi ng isang problema sa visual talyer kapag sinubukan ko upang lumawak ang proyekto:

Error occurred in deployment step ‘Add Solution’: Nabigong kunin ang taksi file sa solusyon.

Ito ay lumiliko out na hindi ka dapat maglagay ng panaklong sa mga pangalan ng file.  Inalis ko ang mga parens at na malutas ang problema.

</dulo>

Mag-subscribe sa aking blog.

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