MVP premiado para o SharePoint

MVPLogo

Esta manhã, Microsoft por e-mail para dizer-me que dado o prêmio Microsoft MVP!

É muita coisa para levar uma só vez. Quando tive a chance de refletir adequadamente, Eu vou compartilhar mais dos meus pensamentos sobre a coisa toda. Eu sei que é um assunto de grande interesse para muitas pessoas.

Estou transbordando de emoção. A tripulação de MVP de SharePoint é um grande grupo de homens e mulheres dedicadas à construção e expansão da Comunidade. Eu só conheci um punhado e aguardamos a reunião mais e ajudar a expandir e melhorar os recursos comunitários sobre o ano que vem. Vai ser um tempo montar…

</fim>

Junho 2008 SUGDC Conferência — Que é um envoltório

Já assisti meu primeiro Conferência de SharePoint Este passado fim de semana e isso foi uma explosão.

Quinta-feira à tarde, Eu dirigi até Virginia, guiado por meu recém-adquirido $50 GPS aparelho plug-in que meu telefone. O dispositivo foi impecável. Após a viagem de cinco horas, Eu tinha a energia para fazer uma corrida agradável sobre o moinho do passo e depois, ainda mais surpreendentemente, tinha a energia de cabeça para o lobby para coquetel de um alto-falante anunciado. Conferência n00b que eu sou, it turned out that the cocktail hour was really a ruse to get speakers to show up and help stuff papers and swag into shoulder bags for conference attendees 🙂

Tinha dificuldade em dormir porque estava a falar a primeira coisa sexta-feira. Nervosismo, uma sensação incômoda de que eu precisava para adicionar um slide para minha apresentação e uma exposição de gatos muito perturbador no Animal Planet me manteve acordado até tarde. Desde que eu fui para dormir tarde, Naturalmente eu levantei cedo. Eu adicionar um slide de arquitetura técnica bastante detalhada. Valeu o esforço porque o 25 minutos de Q&Teriam sido muito estranho sem ela. Tive sorte de receber o primeiro slot na pista técnica. Sahil Malik originalmente ia falar sexta-feira e eu ia falar do sábado, mas ele precisava trocar vezes. Isso me permitiu fazer minha apresentação e, em seguida, relaxe e Aproveite tudo indo para a frente de sexta-feira e sábado.

A apresentação foi Okey. Definitivamente tenho quarto para melhorá-lo. Eu falei sobre como podemos acessar e usar serviços web a partir de um fluxo de trabalho do SharePoint Designer usando uma ação personalizada. Ao longo do tempo, Vou amarrar esta informação em minha série lá no EUSP.com para os usuários finais a tentar que o uso mais fora essa ferramenta. Eu gastei meus slides e demo em 35 minutos, para meu espanto no momento. Felizmente, Q&A foi animada, sem dúvida ajudado pelo fato de que era cedo de manhã antes do almoço. Q&A é minha parte favorita de qualquer apresentação.

Havia muitos assuntos interessantes e espero que o blog sobre eles em maior detalhe esta semana (Se houver tempo, como sempre). Um companheiro da CMS Watch forneceu uma revisão muito esperançosa ainda altamente crítica da posição do SharePoint no mercado. Uma discussão diferente focada sobre a escassez de recursos do SharePoint e a dificuldade que os recrutadores têm de encontrar bons talentos que também é "acessível" neste mercado muito apertado. Do outro CMS referido o pool de recursos humanos do SharePoint como sendo uma "guilda." Estou principalmente familiarizado com esse termo em termos MMORPG e deu-me uma pouco de emoção, to be honest 🙂

O destaque da conferência foi só reunião e alcançando com as pessoas que "conheci" on-line por um tempo. O melhor estava sentado no bar com Becky Isserman (MossLover) para 3 ou 4 horas (e que, Depois que eu tinha acabado de beber durante a noite). Muitas vezes não conseguir falar Farscape ou Babylon 5 com os moradores da cidade de Kansas.

Bob Fox estava lá e como de costume, é um turbilhão de intros, bate-papos e pura energia frenética. Ele me convidou para o café da manhã de sábado com Sahil Malik e foi ótimo.

Sábado (dia 2), Mike Lotter arrastou-se para a conferência para falar sobre o InfoPath e depois juntou-se ao final do dia para fazer uma espécie de geral Q Becky&Uma sessão para sobre 30 Para 45 minutos focados principalmente no InfoPath (Mike) e AJAX (Becky). Quem me dera Becky tinha sido capaz de passar por sua apresentação completa/formal, mas tenho certeza que vai ter a chance de ver isso um dia desses. Tenho a impressão que ela vai ser "bater o circuito" vai para a frente.

Eu poderia ir sobre e sobre. Dois últimos pontos — o objetivo financeiro da conferência foi arrecadar dinheiro para milagre rede das crianças e levantou $5,000. Isso foi incrível. Finalmente, Quero agradecer publicamente Gary Blatt, Gary Vaughn e Bob Fox para alertar-me para e permitindo-me falar na conferência. É claro, o Gary dois tinha uma equipe de pessoas apoiando e organizando e todos vocês foram fantásticos. Eu tinha grandes expectativas antes eu fui e foi melhor do que eu esperava.

Manter o alerta para a próxima conferência agendada para o dia 7 de novembro e 8. Além de um grande conteúdo, é ótimo para uma reunião com todas aquelas personalidades on-line que conheci através de blogs, Twitter, fóruns, etc.

</fim>

Subscreva ao meu blog.

Technorati Tags:

FBA e SQL Server: Uma história de amor

Meu colega tem trabalhado em uma web part em um ambiente de FBA. Entre outras coisas, a web part puxa alguns dados do SQL server. O grande plano para este projeto dita que um DBA configura o nível de segurança de dados em SQL (em oposição a incorporação de um ID de usuário em uma consulta SQL ou outra abordagem).

O problema é que do SQL server não sabe de nada sobre o nosso ambiente de FBA para que ele não pode confiar em nós. Nós resolvemos esse problema por, por falta de uma palavra melhor, manualmente, fingindo ser um usuário do AD para que nós pôde se conectar ao SQL tais que obras de segurança de nível de dados SQL.

Mesmo que o FBA é um recurso do ASP.NET, Nós, povo de nação do SharePoint têm ensinado os vários motores de busca que você está consultando para FBA, Você deve dizer que você quer saber como configurar o FBA no SharePoint. Não consegui encontrar encontrar qualquer informação sobre como habilitar um FBA orientado ASP.NET aplicativo para se comunicar com o SQL da forma que precisávamos.

No decurso de pesquisando sobre isso, Vamos voltar a ler este artigo: Representação do ASP.net

Mais pesquisa nos levou a este artigo de codproject: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

Que nos ajudou a escrever nosso código, que eu incluí abaixo. Não é a coisa mais elegante, Mas funcionou. Espero que você ache útil.

Aqui está o código que trabalhou para nós:

protegido Sub btnSearchCarrier_Click(Object sender, EventArgs e)
 {
 Tente
 {
 ImpersonateUser iU = Novo ImpersonateUser();
 // TODO: Substituir iU.Impersonate de credenciais("Nome_do_domínio", "UserName", "Senha");

//
 CÓDIGO
//

 iU.Undo();
 }
 pegar (Exceção ex)
 {

 }
 }

// Usando a classe de representação como mencionado abaixo.

público Classe ImpersonateUser
 {
 [DllImport("advapi32. dll", SetLastError = verdadeiro)]
 público estático extern bool LogonUser(
 LpszUsername de seqüência de caracteres,
 LpszDomain de seqüência de caracteres,
 LpszPassword de seqüência de caracteres,
 int dwLogonType,
 int dwLogonProvider,
 Ref IntPtr phToken);

 [DllImport("Kernel32. dll", CharSet = Charset. auto)]
 privada extern estático bool CloseHandle(IntPtr handle);

 privada estático IntPtr tokenHandle = Novo IntPtr(0);
 privada estático ImpersonatedUser WindowsImpersonationContext;

 // Se você incorporar esse código em uma DLL, Certifique-se de exigir que ele
 // corre com FullTrust.
 [PermissionSetAttribute(SecurityAction. Demand, Nome = "FullTrust")]
 público void Impersonate(seqüência de caracteres nome de domínio, seqüência de caracteres nome de usuário, senha de seqüência de caracteres)
 {
 Tente
 {

 // Use a função LogonUser gerenciada para obter o usuário token para
 // o usuário especificado, domínio, e senha.
 const int LOGON32_PROVIDER_DEFAULT = 0;

 // Passando este parâmetro faz com que LogonUser criar um token primário.
 const int LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr. zero;

 // Passo -1 Chamada LogonUser para obter um identificador para um token de acesso.
 As Boolean returnValue = LogonUser(
 nome de usuário,
 domainName,
 senha,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 Ref tokenHandle); // tokenHandle - novo token de segurança

 se (false = = returnValue)
 {
 int ret = GetLastWin32Error();
 Console. WriteLine("Chamada LogonUser falha com código de erro : " +
 RET);
 jogar novo System. ComponentModel.Win32Exception(RET);
 }

 // Passo - 2
 WindowsIdentity newId = Novo WindowsIdentity(tokenHandle);
 // Passo -3
 impersonatedUser = newId.Impersonate();

 }
 pegar (Exceção ex)
 {
 Console. WriteLine("Ocorreu uma exceção. " + ex.Mensagem);
 }
 }


 /// <Resumo>
 /// Representação de paragens
 /// </Resumo>
 público Sub desfazer()
 {
 impersonatedUser.Undo();
 // Grátis os tokens.
 se (tokenHandle != IntPtr. zero)
 CloseHandle(tokenHandle);
 }
 }

</fim>

Subscreva ao meu blog.

Technorati Tags:

Adicionando o Lore: SSRS Me diz “rsAccessDenied”, Mas … Eu realmente tenho acesso

Algumas semanas atrás, Eu estava trabalhando com o meu colega desenvolvedor num projeto envolvendo SQL Server Reporting Services plug-in para MOSS. Ele estava desenvolvendo uma web part que fornece uma front-end para o relatório apropriado de fantasia (a principal característica de ser uma pesquisa inteligente em um parâmetro de vários valores de mil pesquisáveis por trás).

Isto estava trabalhando muito bem no ambiente de desenvolvimento, mas no teste de aceitação do usuário (UAT) meio ambiente, Não funcionaria. Disparar o depurador, Veremos os detalhes de exceção como este:

As permissões concedidas ao usuário 'UAT_domainmosssvc' são insuficientes para efectuar esta operação.(rsAccessDenied).

Se você fizer uma pesquisa ao vivo sobre o erro acima, Acha que é bastante comum. Assustadoramente comum. O pior tipo de comum porque tem muitos diferentes potenciais raiz causa e a solução sugerida "sente" direito. Nós provavelmente tentou tudo.

No nosso caso, o problema era que tínhamos feito uma backup/restauração de DEV para UAT. Em algum lugar nos dados, algo ainda estava se referindo a "DEV_domain" (em vez do atualizado "UAT_Domain"). Criamos um novo site, adicionado que a web part e que resolveu nosso problema.

Esperemos que isto salvará alguém uma hora ou duas para baixo da linha.

</fim>

Subscreva ao meu blog.

Technorati Tags:

Correção rápida: Acessar o Site do SharePoint lança [HttpException (0x 80004005): Solicitação expirou.]

Um dos meus colegas de desenvolvedor estava trabalhando em um projeto esta semana e teve um problema de timeout enquanto trabalhava na construção de alguma parte louca da web. Sua parte da web estava bem, Mas "de repente" um site independente tornou-se muito lento e frequentemente esgotado com esse erro:

[HttpException (0x 80004005): Solicitação expirou.]

Eu logado e vi que vários outros sites eram bem. Eu suspeitava que havia algumas partes da web escondida na página e usando o fiel ?Sumário = 1 técnica de depuração, Na verdade encontrei 11 Web parts em uma página, apenas dois dos quais eram visíveis. Melhor ainda (de uma perspectiva let's-hope-I-find-something-ugly-here-that-I-can-fix), três das peças web fechada tinham um nome de "Erro".

Eu deletei as web parts (que por sua vez levou um tempo surpreendentemente longo) e isso resolveu o problema. Para hoje 🙂

</fim>

Subscreva ao meu blog.

Technorati Tags:

Treinamento rápido em classe é excelente

Eu estou começando o dia 4 do jejum é parceiro de treinamento dirigido por Larry Kaye aqui em Needham, MA.

Esta sessão de 5 dias é dividida em classes (3 and 2 dias respectivamente) intitulado "FAST ESP: Desenvolvimento de aplicações de pesquisa personalizado para aliança de parceiros" e "FAST ESP: Desenvolvimento de aplicações de pesquisa personalizado para parceiros da Aliança II".

Esta é uma classe de tipo real boot camp. O material é profundo (muito, muito profundo). O instrutor (Larry) claramente, sabe o que faz. Eu recomendo altamente este treinamento se você considerar isso.

</fim>

SharePoint e FAST — Peanut Butter Cups o Reeses de aplicativos empresariais?

Eu já terminei o dia 2 de formação rápida em Needham ensolarado, MA, e eu estou estourando com idéias (que todas as classes de treinamento bom fazem comigo). Um aspecto particular de rápido tem-me pensar e queria escrevê-lo enquanto era ainda fresco e normal do dia a dia "" empurrou-o fora da minha cabeça.

Nós do SharePoint WSS 3.0 / Implementadores de musgo freqüentemente enfrentam um problema difícil com qualquer projeto SharePoint tamanho razoavelmente: Como vamos fazer todos os dados sem marcas de formatação, carregados em SharePoint que tudo se encaixa dentro da nossa arquitetura de informações perfeitamente projetado?

Com bastante frequência, Isto não é um problema difícil, porque nós nos escopo fora do problema: "Não nos importamos com nada mais do que 3 meses de idade." "Nós vai lidar com os problemas com a pesquisa palavra-chave e vai para a frente vamos fazê-lo da maneira certa…" Etc.

Mas, o que acontece se nós não nos escopo fora do problema e estamos olhando 10 dos milhares ou centenas de milhares (ou mesmo milhões) de docs — o carregamento and marcação de que é nosso desejo devoto?

RÁPIDO pode ser a resposta.

Processo de busca do FAST inclui um monte de peças móveis, mas é uma visão simplificada:

  • Um processo de rastreador procura conteúdo.
  • Ele encontra o conteúdo e entrega-o a um processo de corretor que gerencia um pool de processadores de documento.
  • Processo corretor mãos fora um dos processadores de documento.
  • O processador de documentos analisa o documento e através de um processo de pipeline, analisa o bejeezus fora do documento e entrega-o a um processo de tipo de construtor de índice.

Na nave FAST, Temos um monte de controle sobre o pipeline de processamento de documentos. Nós pode misturar e combinar sobre 100 componentes do encanamento e, mais interessante, Podemos escrever nossos próprios componentes. Como eu disse, FAST é analisar documentos desordenadamente, mas domingo e ele compila um monte de informações úteis sobre os documentos. Aqueles malucos rápidos são claramente louco e obsessivo sobre a análise do documento porque eles têm ferramentas e/ou estratégias realmente categorizar documentos.

Assim … usando rápido em combinação com nosso próprio componente de pipeline personalizado, Podemos pegar todas essas informações de contexto de rápido e alimentá-lo de volta para o MOSS. Pode ser que algo parecido com isto:

  • Documento é alimentado no rápido de MOSS.
  • Análise de documento rápido normal de louco-obsessivo e categorização acontece.
  • Nosso próprio componente de pipeline personalizado deixa cair algumas dessas informações fora de contexto para um banco de dados.
  • Um processo de nosso próprio projeto lê as informações de contexto, faz algumas decisões sobre como adaptar esse documento de musgo dentro de nossa IA e marca-la usando um serviço da web e o modelo de objeto.

É claro, Nenhum tal processo automatizado pode ser perfeito, mas graças ao obsessivo (e possivelmente insane-but-in-a-good-way pessoas rápidas), Talvez tenhamos uma verdadeira luta tiro em um processo de carga em massa verdadeiramente eficaz que encher mais do que apenas um banco de dados SQL com um monte de documentos mal pesquisável.

</fim>

Subscreva ao meu blog.

Aprendendo sobre os usuários finais em www.EndUserSharePoint.com

Mark Miller sobre a http://www.endusersharepoint.com construiu, na minha experiência, o usuário final melhor focada site SharePoint no ' esfera. No último mês, Ele já recorreu a alguns dos blogueiros premier do usuário centrado ao redor para contribuir para o "front page" em uma base regular, incluindo mas não limitado a Paul Culmsee, Chris Quick, and Dessie Lunsford. Ele tem outros alinhado e pronto para contribuir como seus horários permitem.

Eu pulei sobre a oportunidade de participar e meu post inaugural é aqui. Estou escrevendo uma série sobre como usar o SharePoint Designer para criar soluções de fluxo de trabalho de negócios de primeira classe. De acordo com o foco do EUSP.com, esses artigos manterá sempre o usuário final frente e no centro.

Eu pessoalmente tendem a dividir o mundo SharePoint em três grandes grupos: Consultores de SharePoint, desenvolvedores de funcionários a tempo inteiro do SharePoint e usuários finais. Quando eu escrevo, Sempre me pergunto:, Qual desses grupos pode estar interessado no assunto? Maioria das vezes, Acabo de escrever para os dois primeiros (técnico) grupos, principalmente porque eu sou um consultor; é sempre mais fácil e mais autêntico para escrever sobre essas coisas com as quais você está mais familiarizado em um nível pessoal.

Como já observei antes, a comunidade de usuário final é longe, muito maior do que a comunidade técnica. EUSP.com é excelente e recomendo-o vivamente a todos os três grupos. O foco do laser do site é obviamente valioso para usuários finais. No entanto, Nós desenvolvedores e consultores só pode ser melhores na nossa profissão se conseguirmos compreender e responder eficazmente às necessidades dos utilizadores finais que servimos. I know I need all the help I can get 🙂 Check-out.

</fim>

Subscreva ao meu blog.

Invocando SSRS Web Services do WSS / MUSGO no ambiente FBA

Precisávamos invocar o CreateSubscription"" método em um serviço de web SSRS que está hospedado em um FBA gerenciado ambiente MOSS de uma personalizado web part. Estamos ficando variações de:

  • 401: Não autorizado
  • Objeto movido

O "objeto movido" mensagem era mais interessante, porque ele estava dizendo que o objeto"" (nosso serviço do SSRS) "mudou-se" para login. aspx. Isto foi claramente que tivemos algum tipo de problema de autenticação.

Eventualmente percebi que eu tinha... marcada uma entrada de blog por Robert Garret, que descreveu como chamar um serviço de web do WSS/MOSS de propósito geral vivendo dentro de um ambiente de FBA. Note que eu não posso ligar diretamente para o artigo (a partir de 06/09/08) Porque ele quer autenticar. O link que forneço traz a uma "todas as mensagens" Vista e você pode localizar o artigo específico procurando por "Acessando MOSS Web Services usando a autenticação de formulários com base".

Aqui está o código que trabalhou para nós:

ReportingService2006 rs = nulo; 
// Autenticar Autenticação auth = Novo Autenticação(); 
auth.URL = "http://URL/_vti_bin/Authentication.asmx";
auth.CookieContainer =
Novo CookieContainer();
LoginResult resultado = autenticação.Login("userid", "senha");
se (resultado.ErrorCode = = LoginErrorCode.NoError) 
{
// Nenhum erro, Então, pegar os biscoitos.
CookieCollection cookies = autenticação.CookieContainer.GetCookies(Novo URI(auth.URL));
Cookie authCookie = cookies[resultado.CookieName];
RS =
Novo ReportingService2006();
RS.URL =
"http://Server/_vti_bin/ReportServer/ReportService2006.asmx";
RS.CookieContainer =
Novo CookieContainer();
RS.CookieContainer(authCookie);
}
Tente
{
  RS.CreateSubscription(relatório, extSettings, DESC, eventType, matchData, parameters1);
}
pegar (Exceção ex)
{
  Console. WriteLine(ex.Message.ToString());
}

Eu interpreto as coisas funcionem assim:

  • Nossa parte de web precisa de dial-up do serviço de autenticação e dizer, "Ei, Tony, Sou eu!".
  • Serviço de autenticação responde dizendo, "Ei, Eu sei que você. Como estão as crianças? Aqui está um token."
  • Chamamos o serviço de SSRS e dizer, "Tony me mandou, aqui é o token."

</fim>

Subscreva ao meu blog.

Você executou sua análise de pesquisa mensal?

É uma boa prática, Provavelmente, ainda é uma prática recomendada, para rever seus relatórios de pesquisa, uma vez por mês e procurar oportunidades para adicionar as melhores apostas, Tune seu dicionário de sinônimos e talvez até descobrir alguma inteligência de negócios que está oculto à gestão.

Já é a 3ª do mês. Awastin do tempo’ 🙂

</fim>

Subscreva ao meu blog.