arquivos Mensais: Maio 2011

PerformancePoint e erro 33494

Um dos meus clientes chamados hoje quando seu ambiente do PerformancePoint (no SharePoint 2010) quebrou.  Um dos servidores de aplicativos do farm foi ficando sem espaço em disco.  Embora abordando que, o cliente foi desinstalado "too much" e o material PP todos parou de funcionar.  Várias web parts mostraria "Ocorreu um erro inesperado. Erro 33494. Detalhes adicionais foram registrados em log para o administrador":

image

Eu olhei para o erro e não encontrei nada específico para "Erro 33494" mas este fóruns MSDN postagem foi útil: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Achei ADOMD.NET aqui como um componente do SQL Server 2008 Pacote de recursos: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Clique para ampliar)

Eu carregar e instalado que e aquilo afixado tudo.

Eu acho que este é um tipo muito excêntrico de erro, mas se você batê-lo, você pelo menos você tem uma opção.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Lists. asmx, GetListItems e pastas

Eu estava fazendo uma pesquisa para alguém hoje em torno de serviço da web list.asmx fornecido como parte do SharePoint 2010 (e versões anteriores).  Ela foi capaz de obter os itens da lista na pasta raiz (incluindo os nomes das subpastas), mas não poderia obter itens de subpastas.  Eu fiz alguns olhando em volta na Internet e é uma questão surpreendentemente comum.  Ainda, Eu não poderia obter uma boa resposta para a pergunta simples, "se eu sei que a pasta, Como faço para obter os itens na pasta?”  Para ser honesto, Eu não tentei tudo o que dura desde que eu tenho quis figura esta um fora em meu próprio por um tempo Sorriso.

Para configurá-lo, Eu criei um site chamado "Blogging cenários" e uma lista personalizada denominada "Lista com Sub pastas personalizadas".  Em seguida, criei pastas com o nome:

  • Ano 2005
  • Ano 2006
  • Ano 2007

Eu adicionei alguns itens para a pasta "Ano 2006".  Isso é o que parece:

image

Meu amigo não é escrever código c# mas sim usando Java, assim que o envelope SOAP foi o que ela realmente precisava.  Para obter que, Eu escrevi um pouco de jQuery e então usado fiddler para começar a conversa de HTTP real.

Aqui está o jQuery pertinente (Eu copiei o código para baixo abaixo se você quiser copiar/colar):

image

Eles primeiro chave deve incluir ambos um <queryOptions> and <QueryOptions> nó.  A segunda chave é que o <Pasta> nó é uma URL para que o cliente tem acesso.

Pode haver outras maneiras de obter esta, mas isso funcionou bem para mim quando usando jQuery.

Aqui está o envelope SOAP para o acima:

<soapenv:Envelope xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Lista personalizada com Sub pastas</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef FieldRef nome =' título’ />
          <FieldRef FieldRef nome ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Pasta>
http://demoserver1/Blogs Lista de cenários/listas/Custom com Sub pastas/ano 2006</Pasta>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corpo>
</soapenv:Envelope>

Um monte de exemplos e discussão em torno deste levou-me a crer que era tudo que eu preciso <QueryOptions> e especifique um nome de pasta.  Para mim, Eu preciso tanto para envolvê-lo dentro <queryOptions> assim como especificar um URL totalmente qualificado para o <Pasta> nó.

Aqui está o programa de configuração do AJAX jQuery:

$(documento).pronto(função() {
       var soapEnv =
           "<soapenv:Envelope xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Lista personalizada com Sub pastas</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef FieldRef nome =' título’ /> \
                              <FieldRef FieldRef nome ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Pasta>http://demoserver1/Blogging Lista de cenários/listas/Custom com Sub pastas/ano 2006</Pasta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corpo> \
           </soapenv:Envelope>";

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Padrões de fluxo de trabalho do SPD, Dicas e truques

Eu dei minha apresentação hoje no SharePoint Fest em Denver. Aqui é a própria apresentação PowerPoint: http://www.mstechblogs.com/paul/wp-content/uploads/2011/05/SharePointFest.pptx

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Lists. asmx, GetList e "valor não pode ser nulo”

Descobri hoje que o GetList() Método em lists. asmx serviço da Web tem de ser chamado com muito cuidado ou é propenso ao lançar uma misteriosa exceção "Valor não pode ser nulo" (e que está assumindo que você pode passar a mensagem de erro genérico ainda pior, "Exceção do tipo ' Microsoft.SharePoint.SoapServer.SoapServerException’ foi lançada.")  Especificamente, Achei que você não pode fornecer qualquer tipo de prefixo sobre o método GetList.  O seguinte trecho de jQuery ilustra o ponto:

image

Se você fizer isso, o serviço web responde com "Valor não pode ser nulo" como por isso Fiddler-desde transcrição HTTP:

<?XML version = "1.0" Encoding = "utf-8"?>
  <sabão:Envelope
     xmlns:sabão ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <sabão:Corpo>
    <sabão:Falhas>
      <FaultCode>sabão:Servidor</FaultCode>
      <FaultString>
        Exceção do tipo ' Microsoft.SharePoint.SoapServer.SoapServerException’ foi lançada.
      </FaultString>
      <Detalhes>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Valor não pode ser nulo.
        </ErrorString>
      </Detalhes>
    </sabão:Falhas>
  </sabão:Corpo>
</sabão:Envelope>

É claro, Você provavelmente não iria adicionar o prefixo "s0" em seu próprio país, mas algumas ferramentas são propensas a fazê-lo (como o Eclipse).

Isto é tanto mais confuso / frustrante porque outros métodos toleram prefixos.  Por exemplo, o GetListCollection Método não se importa se for prefixado, mesmo com prefixos de disparates como "xyzzy":

image

Este "valor não pode ser nulo" parece bastante comum com lists. asmx tão esperançosamente isto ajudará alguém fora no futuro.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Infinitamente aninhando <div> Tags e jQuery

Este parece ser um tema tão excêntrico, Não tenho certeza realmente vale a pena blogar sobre, mas que nunca deixou de me antes, Então, aqui vamos nós Sorriso

Estou trabalhando fora de um projeto onde estou puxando alguns dados de uma pesquisa, embalagem em uma mensagem de XML e, em seguida, o XML é, finalmente, transformada em HTML através do XSLT.  Há um monte de jQuery envolvido, um pouco de que implementa algumas funcionalidades das tabulações.  Quando você clica em uma guia (realmente, uma <div>), jQuery chama Hide() e show() em várias divs (o carregamento da página inicial baixa todo o conteúdo assim lá não são nenhuma postagens neste caso).

Um monte de horas atrás, na guia comutação lógica começou a se comportar de forma irregular e ele não iria mostrar um dos meus guias.  Eu finalmente seguiu para baixo para o fato de que explorer internet (pelo menos) pensa-se que o <div> marcas aninhadas até agora, muito mais profundo do que se destinam.Mostra barra de ferramentas do desenvolvedor:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— Finalmente mostrando ele foi fechado todo o caminho aqui!

Assim, se eu fiz um $("# Tab1Content").esconder(), Eu também esconderia Tab2 e nunca poderia mostrar Tab2 se eu não mostrar também Tab1.  Copiei e colei o código em visual studio e ele mostrou tudo de forro da div acima agradàvel, exatamente como eles deveriam estar fazendo, parecido com isto:

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

Eu bati minha cabeça contra a parede por um tempo e notei que no HTML real código foi gerando um monte de vazio <div> marcas, como:

<corpo>

  <div id = "Tab1Content">

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

  </div>

  <div id = "Tab2Content">

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

  </div>

</corpo>

(O acima é waaaaaaaaaaaay simplificado.  As tags div vazia são totalmente válidas. Alguns dos meus <div> marcas estavam cheias de conteúdo, mas muitos outros não foram.  Cheguei à conclusão de que meu <XSL:for-each> directivas foram emitindo a forma curta div marcas quando o xsl:for each não ' encontrar qualquer dados.  Forcei um comentário HTML na saída, como mostrado:

image

 

Depois que eu fiz que, o div alinhado perfeitamente e meu guia comutação começou a trabalhar.

Como sempre, Espero que isso ajude alguém em um beliscão.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Correção rápida: "O nome de tipo de conteúdo '$ Resources:ReportServerResources … não pode conter … caracteres especiais”

Fui passar algum tempo limpando um SharePoint 2010 site e uma das questões de limpeza se relaciona com um corrupto / instalado incorretamente emissão de serviços de relatório do SQL Server.  A questão surgiu quando um dos meus colegas tentou salvar um site como um modelo e, em seguida, criar criar um novo site baseado nesse modelo.  Salvar operação trabalhou muito bem, mas quando ela tentou criar o novo site, SharePoint exibida a seguinte mensagem de erro:

Erro

O nome de tipo de conteúdo '$ Resources:ReportServerResources,DataSourceContentTypeName;' não pode conter: \ / : * ? “ # % < > { } | ~ & , dois períodos consecutivos (..), ou caracteres especiais, como um guia.

Aqui está uma tampa de tela:

 

image

Eu tinha um olhar para os tipos de conteúdo no site e encontrei este:

image

Esses tipos de conteúdo são claramente insalubres.

Esse problema parece vir acima muito na Internet e não parece haver um consenso único sobre como resolvê-lo.  Eu encontrei uma tabela acessível que mapeado os nomes de tipo de conteúdo ruim para nomes de tipo de conteúdo bom aqui: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Eu atualizado manualmente-los assim:

image

(BrightStarr o nome é, obviamente, opcional, mas não pode ferir Sorriso )

Isso permitiu-me criar um novo modelo e não quebra nada em outros sites, inclusive algumas coisas do PerformancePoint Server que um grupo totalmente diferente de pessoas trabalhavam em.  Então eu era capaz de criar um novo site no modelo.  Sucesso!

Eu não sou certo se trata de uma 100% solução, mas ele me pegou e todos os envolvidos do passado esta enervante erro.  Se eu encontrar alguma coisa nova, Vou postar uma atualização.  Meu nervosismo decorre do fato de que estes nomes não devem estar errados em primeiro lugar e corrigindo-se o nome de exibição, Eu não estou tocando o nome interno. 

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Uma das causas para "O criador desta falha não especificou um motivo.”

Eu tenho feito muito trabalho com a pesquisa do SharePoint ultimamente e especificamente o KeywordQuery KeywordQuery classe, Propriedades e métodos.

Se você deseja que o conjunto de resultados para retornar resultados além dos suspeitos do costume (Consulte aqui), adicioná-lo à coleção SelectedProperties, como em:

myKeywordQuery.SelectProperties.Add("xyzzy");

Muito obrigado e uma ponta do chapéu a Corey Roth and Este post do blog extremamente útil (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

No meu caso, "xyzzy" não é realmente uma propriedade gerenciada.  Quando eu adicionei-a SelectedProperties de qualquer forma, SharePoint atirou um dos meu favorito sempre exceções de tempo de execução:

"O criador desta falha não especificou um motivo."

Eu gosto especialmente a capital "R" no razão.  Isso soa-me como o.LÍQUIDA equivalente de"Eu não tenho nenhuma boca, e eu deve gritar.”

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Referência útil: Resultados de padrão de pesquisa KeywordQuery

Quando você chamar Execute() Método em um KeywordQuery, Você pode criar um ResultTable baseado em ResultType.RelevantResults.  Este trecho de código ilustra o que quero dizer:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

A tabela resultante terá as seguintes colunas de informações: 

WorkId
Classificação
Título
Autor
Tamanho
Caminho
Descrição
Gravação
Nome do site
CollapsingStatus de
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Esta lista eu derivado um SharePoint 2010 meio ambiente, Enterprise edition.  Espero que seja útil a alguém no futuro.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Uma das razões para: "Falha ao extrair o arquivo cab da solução”

Enquanto trabalhava em uma web part visual studio projeto hoje, Eu fiz uma pequena re-org de alguns arquivos para ser colocado na pasta Layouts como parte do processo de implantação. Especificamente, Eu renomeado o arquivo. js de "TypeAhead.js" para "TypeAhead(antigos).js"  Eu pretendo removê-lo assim que seu sucessor "TypeAhead.js" prova correta.  Parecia que isso:

image

Isso causou imediatamente um problema com o visual studio quando tentei implantar o projeto:

Ocorreu um erro na etapa de implantação 'Adicionar solução': Falha ao extrair o arquivo cab da solução.

Gira para fora que você não deve colocar um parêntese em nomes de arquivo.  Eu removi o parens e que resolveu o problema.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin