Arsip bulanan: Mei 2011

PerformancePoint dan kesalahan 33494

Salah satu klien saya yang disebut hari ini ketika mereka PerformancePoint lingkungan (dalam SharePoint 2010) rusak.  Salah satu aplikasi server di peternakan kehabisan ruang disk.  Sementara menangani, klien ditanggalkan "terlalu" dan PP barang-barang semua berhenti berfungsi.  Berbagai bagian web akan menunjukkan "terjadi kesalahan tak terduga. Kesalahan 33494. Rincian tambahan telah login untuk administrator":

image

Aku mendongak kesalahan dan tidak menemukan apa pun khusus untuk "Kesalahan 33494" tapi ini Forum MSDN posting ini membantu: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Saya menemukan ADOMD.NET sebagai sebuah komponen dalam SQL Server 2008 Feature Pack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Klik untuk memperbesar)

Saya download dan diinstal dan itu tetap segalanya.

Saya rasa ini adalah cukup eksentrik semacam kesalahan, tetapi jika Anda memukulnya, Anda setidaknya Anda memiliki pilihan.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Lists.ASMX, GetListItems dan folder

Aku sedang melakukan penelitian untuk seseorang hari ini sekitar list.asmx web layanan yang disediakan sebagai bagian dari SharePoint 2010 (dan sebelumnya).  Ia mampu untuk mendapatkan daftar item di folder akar (termasuk nama subfolder), tapi tidak bisa mendapatkan barang-barang dalam subfolder.  Aku melakukan beberapa memandang berkeliling di the internets dan pertanyaan yang mengejutkan umum.  Namun, Saya tidak bisa mendapatkan jawaban yang bagus untuk pertanyaan sederhana, "jika saya tahu folder, Bagaimana saya mendapatkan item di folder?”  Jujur, Aku tidak mencoba terlalu keras karena aku ingin angka satu ini keluar pada saya sendiri untuk sementara waktu Tersenyum.

Untuk mengatur hal ini, Saya membuat sebuah situs bernama "Blogging skenario" dan daftar kustom bernama "Daftar dengan Sub folder".  Saya kemudian membuat folder bernama:

  • Tahun 2005
  • Tahun 2006
  • Tahun 2007

Saya menambahkan beberapa item ke folder "Tahun 2006".  Ini adalah apa yang tampak seperti:

image

Teman saya tidak menulis C# kode tapi agak menggunakan Java, Jadi SOAP amplop adalah apa yang dia benar-benar diperlukan.  Untuk mendapatkan itu, Saya menulis sedikit jQuery dan kemudian digunakan fiddler untuk mendapatkan percakapan HTTP sebenarnya.

Berikut adalah relevan jQuery (Aku menyalin kode turun di bawah ini jika Anda ingin copy/paste):

image

Mereka kunci pertama adalah untuk memasukkan kedua <queryOptions> dan <QueryOptions> node.  Tombol kedua adalah bahwa <Folder> simpul adalah URL yang klien memiliki akses.

Mungkin ada cara lain untuk mendapatkan ini, Tapi ini bekerja dengan baik bagi saya ketika menggunakan jQuery.

Berikut adalah SOAP amplop untuk di atas:

<soapenv:Amplop xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Tubuh>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Daftar kustom dengan Sub folder</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nama =' judul’ />
          <FieldRef nama ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Folder>
http://demoserver1/blog Skenario/daftar/Custom daftar dengan Sub folder/tahun 2006</Folder>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Tubuh>
</soapenv:Amplop>

Banyak contoh dan diskusi sekitar ini membawaku untuk percaya bahwa semua saya butuhkan adalah <QueryOptions> dan tentukan nama folder.  Bagi saya, Saya perlu untuk kedua bungkus dalam <queryOptions> serta menentukan URL yang memenuhi syarat untuk <Folder> node.

Here's the jQuery AJAX setup:

$(dokumen).siap(fungsi() {
       var soapEnv =
           "<soapenv:Amplop xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Tubuh> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Daftar kustom dengan Sub folder</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nama =' judul’ /> \
                              <FieldRef nama ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Folder>http://demoserver1/Blogging Skenario/daftar/Custom daftar dengan Sub folder/tahun 2006</Folder> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Tubuh> \
           </soapenv:Amplop>";

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Lists.ASMX, GetList dan "nilai tidak boleh null”

Hari ini saya menemukan bahwa GetList() metode dalam Lists.ASMX Layanan web telah dipanggil sangat hati-hati atau rentan untuk melemparkan misterius pengecualian "Nilai tidak boleh null" (dan itu dengan anggapan Anda dapat melewati lebih buruk pesan kesalahan umum, "Pengecualian jenis ' Microsoft.SharePoint.SoapServer.SoapServerException’ dilemparkan.")  Khusus, Saya menemukan bahwa Anda tidak dapat menyediakan jenis awalan pada metode GetList.  JQuery potongan berikut menggambarkan titik:

image

Jika Anda melakukannya, Layanan web menanggapi dengan "Nilai tidak boleh null" seperti ini Fiddler-disediakan HTTP transkrip:

<?Versi XML = "1.0" pengkodean = "utf-8"?>
  <sabun:Amplop
     xmlns:sabun ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:XSI = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:xsd ="
http://www.w3.org/ 2001/XMLSchema">

  <sabun:Tubuh>
    <sabun:Kesalahan>
      <faultcode>sabun:Server</faultcode>
      <faultstring>
        Pengecualian jenis ' Microsoft.SharePoint.SoapServer.SoapServerException’ terlempar.
      </faultstring>
      <detail>
        <errorstring xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Nilai tidak boleh null.
        </errorstring>
      </detail>
    </sabun:Kesalahan>
  </sabun:Tubuh>
</sabun:Amplop>

Tentu saja, Anda mungkin tidak akan menambahkan awalan "s0" itu sendiri, tetapi beberapa alat cenderung melakukannya (seperti Eclipse).

Ini semua lebih membingungkan / frustrasi karena metode lain mentolerir awalan.  Misalnya, The GetListCollection metode tidak keberatan jika itu adalah bahasa, bahkan dengan awalan omong kosong seperti "xyzzy":

image

Ini "nilai tidak boleh null" tampaknya cukup umum dengan lists.asmx jadi mudah-mudahan ini akan membantu seseorang di masa depan.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Tanpa henti bersarang <div> Tag dan jQuery

Ini tampaknya seperti eksentrik topik, I 'm not sure it's benar-benar worth blogging tentang, tapi itu tidak pernah berhenti saya sebelumnya, Jadi di sini kita pergi Tersenyum

Saya bekerja pada sebuah proyek di mana aku menarik beberapa data dari pencarian, Kemasan ini ke pesan XML dan kemudian XML yang pada akhirnya berubah menjadi HTML melalui XSLT.  Ada banyak jQuery yang terlibat, salah satu dari sedikit yang mengimplementasikan beberapa fungsi tabbing.  Bila Anda klik pada tab (Benarkah, a <div>), jQuery memanggil .hide() dan .show() pada berbagai divs (beban awal halaman download semua konten jadi tidak ada postbacks dalam hal ini).

Sekelompok menit yang lalu, tab beralih logika mulai bersikap tak menentu dan itu tidak menunjukkan salah satu tab saya.  Saya akhirnya dilacak ke kenyataan bahwa internet explorer (setidaknya) berpikir bahwa <div> Tag bersarang jauh, jauh lebih dalam daripada yang dimaksudkan.Toolbar pengembang akan menunjukkan:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <-akhirnya menunjukkan itu ditutup sepanjang jalan di sini!

Jadi, Jika saya melakukan $("#Tab1Content").Sembunyikan(), Saya juga akan menyembunyikan Tab2 dan aku tidak pernah bisa menunjukkan Tab2 jika aku juga tidak menunjukkan Tab1.  Aku disalin dan disisipkan kode ke visual studio dan menunjukkan semua lapisan div up manis, sama seperti mereka seharusnya melakukan, tampak seperti ini:

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

Aku mengalahkan kepalaku ke dinding untuk sementara dan melihat bahwa dalam HTML sebenarnya kode ini menghasilkan banyak kosong <div> Tags, seperti:

<bodyHTMLan >>< kuat > pesan yang kuat.</strong> </body> </html> ">

  <div id = "Tab1Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

  <div id = "Tab2Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

</bodyHTMLan >>< kuat > pesan yang kuat.</strong> </body> </html> ">

(Di atas adalah waaaaaaaaaaaay yang disederhanakan.  Tag div kosong benar-benar berlaku. Beberapa saya <div> Tag yang penuh dengan konten, tetapi banyak lagi tidak.  Saya datang ke realisasi bahwa saya <Extensible Stylesheet Language:untuk setiap> arahan yang memancarkan bentuk pendek div tag ketika xsl:tidak untuk setiap ' menemukan data.  Aku memaksa komentar HTML ke output, seperti yang ditunjukkan:

image

 

Setelah saya melakukan itu, Semua div berbaris dengan baik dan tab beralih mulai bekerja.

Seperti biasa, Saya harap ini membantu seseorang dalam keadaan darurat.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Perbaikan cepat: "Nama tipe konten '$ Resources:ReportServerResources … tidak boleh berisi … karakter khusus”

Aku telah menghabiskan waktu membersihkan SharePoint 2010 situs dan salah satu pembersihan isu-isu yang berhubungan dengan korup / salah dipasang layanan SQL Server laporan masalah.  Masalah muncul ketika salah satu kolega saya mencoba untuk menyimpan situs sebagai template dan kemudian membuat membuat situs baru berdasarkan template itu.  Simpan operasi bekerja dengan baik, tetapi ketika ia berusaha untuk membuat situs baru, SharePoint ditampilkan pesan galat berikut:

Kesalahan

Nama jenis konten ' $Resources:ReportServerResources,DataSourceContentTypeName;' tidak boleh berisi: \ / : * ? “ # % < > { } | ~ & , dua periode berturut-turut (..), atau karakter khusus seperti tab.

Di sini adalah topi layar:

 

image

Saya telah melihat jenis konten di situs dan menemukan ini:

image

Jenis konten tersebut tidak jelas sehat.

Masalah ini tampaknya datang banyak di the Internets dan tidak tampaknya ada konsensus tunggal mengenai bagaimana mengatasinya.  Saya menemukan meja yang berguna yang dipetakan nama jenis konten yang buruk dengan nama-nama jenis konten yang baik di sini: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Aku secara manual memperbarui mereka thusly:

image

(BrightStarr dalam nama adalah jelas opsional, tapi tidak ada salahnya Tersenyum )

Hal ini memungkinkan saya untuk membuat template baru dan tidak melanggar apapun di situs lain, termasuk beberapa hal PerformancePoint Server yang sama sekali berbeda sekelompok orang bekerja pada.  Kemudian saya mampu untuk membuat situs baru pada template.  Sukses!

Saya tidak yakin ini adalah 100% solusi, Tapi itu membuat saya dan semua orang yang terlibat melewati ini menjengkelkan kesalahan.  Jika saya menemukan sesuatu yang baru, Saya akan posting update.  Saya gugup berasal dari fakta bahwa nama-nama ini tidak boleh salah di tempat pertama dan dengan memperbaiki nama tampilan, Saya tidak menyentuh nama internal. 

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Satu penyebab untuk "pencipta kesalahan ini tidak menyebutkan alasan.”

Saya telah melakukan banyak pekerjaan dengan SharePoint pencarian akhir-akhir ini dan secara khusus kelas KeywordQuery, properti dan metode.

Jika Anda menginginkan hasil yang ditetapkan untuk mengembalikan hasil atas dan di luar tersangka (Lihat di sini), Anda menambahkannya ke koleksi SelectedProperties, seperti dalam:

myKeywordQuery.SelectProperties.Add("xyzzy");

Banyak terima kasih dan ujung topi ke Corey Roth dan posting sangat berguna blog ini (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

Dalam kasus saya, "xyzzy" tidak benar-benar sebuah properti yang dikelola.  Ketika saya menambahkan ke SelectedProperties tetap, SharePoint melemparkan salah satu favorit saya pernah runtime pengecualian:

"Pencipta kesalahan ini tidak menentukan alasan."

Saya terutama seperti ibukota "R" alasan.  Ini kedengarannya saya seperti .NET setara dengan"Saya memiliki mulut tidak, dan aku harus scream.”

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Referensi yang berguna: Default hasil dari pencarian KeywordQuery

Ketika Anda memanggil Execute() metode pada KeywordQuery, Anda dapat membuat ResultTable berdasarkan ResultType.RelevantResults.  Potongan kode ini menggambarkan apa yang saya maksud:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

Tabel yang dihasilkan akan memiliki kolom berikut informasi: 

WorkId
Peringkat
Judul
Penulis
Ukuran
Jalan
Deskripsi
Menulis
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Aku berasal daftar ini dari SharePoint 2010 lingkungan, edisi Enterprise.  Mudah-mudahan itu akan berguna untuk seseorang di masa depan.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Salah satu alasan: "Gagal untuk mengekstrak berkas cab dalam larutan”

Ketika bekerja pada visual studio web bagian proyek hari ini, Aku kecil re-org beberapa file untuk dimasukkan ke dalam _layouts folder sebagai bagian dari proses deployment. Khusus, Diganti menjadi .js file dari "TypeAhead.js" untuk "TypeAhead(lama).js"  Saya berencana untuk menghapusnya segera setelah pendahulunya "TypeAhead.js" membuktikan benar.  Itu tampak seperti ini:

image

Hal ini segera menyebabkan masalah dengan visual studio ketika saya mencoba untuk menyebarkan proyek:

Terjadi kesalahan dalam langkah penyebaran 'Menambahkan solusi': Gagal untuk mengekstrak berkas cab dalam larutan.

Ternyata bahwa Anda tidak harus meletakkan tanda kurung dalam nama file.  Aku melepaskan parens dan yang memecahkan masalah.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin