MVP concedidos para SharePoint

MVPLogo

Esta mañá, Microsoft enviado a dicirme que me dar o premio Microsoft MVP!

It’s a lot to take in all at once. When I’ve had a chance to properly reflect, I’ll share more of my thoughts on the whole thing. I know it’s a subject of great interest to a lot of people.

I’m bursting with excitement. The SharePoint MVP crew is a great group of men and women dedicated to building and expanding the community. I’ve only met a handful and look forward to meeting more and helping to expand and improve community resources over the coming year. It’s going to be a while ride…

</final>

Xuño 2008 Conferencia SUGDC — Aquel é un envoltura

Eu asistir a miña primeira SharePoint conferencia this past weekend and it was a blast.

Onte pola tarde, Eu dirixe ata a Virginia, guiado polo meu recén adquirido $50 GPS appliance plug-in thing to my phone. The device was flawless. After the five hour drive, Eu tiña a enerxía para facer unha boa carreira na fábrica de rodaxe e, a continuación,, aínda máis sorprendente, had the energy to head to the lobby for an advertised speaker’s cocktail hour. Conference n00b that I am, 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 🙂

Had a hard time sleeping because I was speaking first thing Friday AM. Nervousness, a nagging feeling that I needed to add a slide to my presentation and a very disturbing cat show on Animal Planet kept me up late. Since I went to sleep late, I naturally got up early. I did add a fairly detailed technical architecture slide. It was well worth the effort because the 25 minutos de Q&A would have been very awkward without it. I was lucky to get the first slot in the technical track. Sahil Malik was originally going to speak Friday AM and I was going to speak Saturday but he needed to swap times. This allowed me to do my presentation and then sit back and enjoy everything going forward Friday and Saturday.

The presentation went OK. I definitely have room to improve it. I spoke about how we can access and use web services from a SharePoint Designer workflow using a custom action. Ao longo do tempo, Vou amarrar esta información na miña serie enriba da EUSP.com for End Users trying to get the most use out of that tool. I blew through my slides and demo in 35 actas, to my dismay at the time. Afortunadamente, Q&A era animada, no doubt helped by the fact that it was early morning before lunch. Q&A is my favorite part of any presentation.

Había moitos temas interesantes e espero que para o blog sobre eles en maior detalle esta semana (o tempo permitir, como sempre). A fellow from CMS Watch provided a highly critical yet very hopeful review of SharePoint’s position in the market. A different discussion focused on the paucity of SharePoint resources and the difficulty that recruiters have finding good talent that is also "affordable" in this very tight market. The CMS Watch guy referred to the SharePoint human resources pool as being like a "guild." I’m mainly familiar with that term in MMORPG terms and it gave me a little thrill, to be honest 🙂

The highlight of the conference was just meeting and catching up with people I’ve "known" online for a while. The best was sitting at the bar with Becky Isserman (MossLover) para 3 ou 4 horas (e que, beber despois de ter rematado a noite). I don’t often get to talk about Farscape ou Babilonia 5 cos veciños de Kansas City.

Bob Fox estaba alí e, como de costume, é un turbillón de intros, chats and just plain frenetic energy. He invited me to Saturday breakfast with Sahil Malik and that was great.

Sábado (día 2), Mike Lotter arrastrou-se para a conferencia para falar do InfoPath e, a continuación, el uníuse a Becky ao final do día para facer unha especie de xeral Q&Unha sesión por uns 30 para 45 minutos, enfocada principalmente en InfoPath (Micrófono) and AJAX (Becky). I wish Becky had been able to go through her full/formal presentation but I’m sure I’ll get a chance to see that one of these days. I have a feeling she’ll be "hitting the circuit" aquí para diante.

I could go on and on. Two last points — the financial purpose of the conference was to raise money for the Children’s Miracle Network and it raised $5,000. That was awesome. Finalmente, Quero dar as grazas públicamente Gary Blatt, Gary Vaughn and Bob Fox for alerting me to and allowing me to speak at the conference. Por suposto, the two Gary’s had a team of people supporting and organizing and all of you were awesome. I had high expectations before I went and it was better than I had hoped for.

Keep on the alert for the next conference scheduled for November 7th and 8th. Aside from some great content, é excelente para se atopar con todas as personalidades en liña que coñeceu a través de blogs, Twitter, Foros, etc.

</final>

Rexístrate para o meu blog.

Technorati Tags:

FBA e SQL Server: Unha Historia de Amor

My colleague has been working on a web part in an FBA environment. Among other things, the web part pulls some data from SQL server. The grand plan for this project dictates that a DBA configures data level security in SQL (en oposición a incorporación dun ID de usuario nunha consulta SQL ou algunha outra visión).

The problem is that SQL server doesn’t know anything about our FBA environment so it can’t trust us. We solved this problem by, por falta dunha palabra mellor, manually impersonating an AD user so that we could connect to SQL such that SQL data level security works.

Aínda FBA é unha característica ASP.NET, nós SharePoint Nación persoas teñen ensinado os distintos buscadores que se está consultando a FBA, you must mean you want know how to configure FBA in SharePoint. I failed to find find any information on how to enable an FBA oriented ASP.NET application to communicate with SQL in the way we needed.

No curso de investigar este, que re-ler este artigo: ASP.NET representación

Máis investigación nos levou a este artigo codproject: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

Iso nos axudou a escribir o noso código, which I’ve included below. It’s not the most elegant stuff, but it worked. I hope you find it helpful.

Aquí está o código que funcionou para nós:

protexido baleiro btnSearchCarrier_Click(object sender, EventArgs e)
 {
 intentar
 {
 U = ImpersonateUser novo ImpersonateUser();
 // ALL: Substitúe as credenciais
 ("DomainName", "UserName", "Password");

//
 CODE
//

 iU.Undo();
 }
 incorporarse (Exception ex)
 {

 }
 }

// A través da representación de clase, como mencionado continuación.

público clase ImpersonateUser
 {
 [DllImport("advapi32.dll", SetLastError = certo)]
 público estático externamente bool LogonUser(
 LpszUsername cadea,
 Cordas lpszDomain,
 Cordas lpszPassword,
 int dwLogonType,
 int dwLogonProvider,
 ref IntPtr phToken);

 [DllImport("kernel32.dll", Charset = CharSet.Auto)]
 privado externamente estático bool CloseHandle(IntPtr);

 privado estático IntPtr tokenHandle = novo IntPtr(0);
 privado estático WindowsImpersonationContext impersonatedUser;

 // Se incorporar este código nunha DLL, asegúrese de esixir que
 // carreiras con FullTrust.
 [PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
 público anular Representar(corda Nome_Domínio, cadea usuario, cadea contrasinal)
 {
 intentar
 {

 // Utilice a función LogonUser xestionado para o token de usuario para
 // o usuario especificado, dominio, e contrasinal.
 const int LOGON32_PROVIDER_DEFAULT = 0;

 // Pasando este parámetro fai que LogonUser para crear un token primario.
 const int LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr.Zero;

 // Paso -1 Chama LogonUser para obter un identificador para un token de acceso.
 bool returnValue = LogonUser(
 Nome de usuario,
 nome de dominio,
 contrasinal,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 Propiedade tokenHandle); // tokenHandle - novo token de seguridade

 se (teito == returnValue)
 {
 int ret = Marshal.GetLastWin32Error();
 Console.WriteLine("LogonUser call failed with error code : " +
 dereito);
 xogar novo System.ComponentModel.Win32Exception(dereito);
 }

 // Paso - 2
 WindowsIdentity NewID = novo WindowsIdentity(tokenHandle);
 // Paso -3
 impersonatedUser = newId.Impersonate();

 }
 incorporarse (Exception ex)
 {
 Console.WriteLine("Exception occurred. " + ex.Message);
 }
 }


 /// <resumo>
 /// Deixa representación
 /// </resumo>
 público anular Desfacer()
 {
 impersonatedUser.Undo();
 // Liberar os tokens.
 se (tokenHandle != IntPtr.Zero)
 CloseHandle(tokenHandle);
 }
 }

</final>

Rexístrate para o meu blog.

Technorati Tags:

Sumándose a Lore: SSRS dime “rsAccessDenied”, Pero … Realmente teño acceso

Algunhas semanas atrás, I was working with my developer colleague on a project involving SQL Server Reporting Services plug-in for MOSS. He was developing a web part that provides a fancy front-end to the report proper (A principal característica ser unha busca intelixente en un parámetro con varios miles de valores searchable detrás del).

Iso foi moi bo traballar no ámbito de desenvolvemento, pero a proba de aceptación do usuario (UAT) ambiente, it wouldn’t work. Firing up the debugger, queremos ver detalles de excepción como este:

Os permisos concedidas ao usuario 'UAT_domain mosssvc' son insuficientes para realizar esta operación.(rsAccessDenied).

Se se fai unha busca en directo sobre o erro anterior, you find it’s quite common. Scarily common. The worst kind of common because it has many different potential root causes and everyone’s suggested solution "feels" dereito. We probably tried them all.

No noso caso, the problem was that we had done a backup/restore of DEV to UAT. Somewhere in the data, something was still referring to "DEV_domain" (instead of the updated "UAT_Domain"). We created a new site, engadida á parte web e que resolveu o noso problema.

Esperemos que isto ha salvar a alguén dunha hora ou dúas para abaixo da liña.

</final>

Rexístrate para o meu blog.

Technorati Tags:

Quick Fix: Acceder web do SharePoint Lanza [HttpException (0x80004005): A solicitude caducou.]

One of my developer colleagues was working on a project this week and ran into a timeout problem while working on building some crazy web part. His web part was fine, pero "de súpeto" un sitio non relacionado tornouse moi lento e moitas veces esgotado con este erro:

[HttpException (0x80004005): A solicitude caducou.]

I logged in and saw that several other sites were just fine. I suspected that there were some hidden web parts on the page and using o fiel ?contido = 1 técnica de depuración, Eu tiña de feito atopar 11 Web Parts na páxina, only two of which were visible. Even better (a partir dun imos-esperanza-I-atopar-algo-Ugly-aquí-que-me-me-fix perspectiva), three of those closed web parts had a name of "Error".

Eu apaguei as partes da web (que se deu un tempo sorprendentemente longo) and that solved the problem. For today 🙂

</final>

Rexístrate para o meu blog.

Technorati Tags:

Formación en clase FAST é excelente

Estou empezando día 4 de formación socio da FAST liderada por Larry Kaye aquí en Needham, MA.

Nesta sesión de 5 días divídese en clases (3 e 2 días respectivamente) entitled "FAST ESP: Desenvolver Custom Search solicitudes de Alliance Partners I" and "FAST ESP: Developing Custom Search Applications for Alliance Partners II".

This is a real boot camp type class. The material is deep (very, very deep). The instructor (Larry) clearly knows his stuff. I highly recommend this training if you considering it.

</final>

SharePoint e rápido — Peanut Butter Cups do Reese do Enterprise Apps?

Eu rematar día 2 de adestramento rápido na soleada Needham, MA, e eu estou cheo de ideas (que todos os bos cursos de formación que facer para me). One particular aspect of FAST has me thinking and I wanted to write it down while it was still fresh and normal day-to-day "stuff" empurrou-o para fora da miña cabeza.

Nós SharePoint WSS 3.0 / Moss implementadores miúdo enfrontan un problema difícil con calquera proxecto SharePoint de tamaño razoable: Como podemos obter todos os datos non marcados cargados no SharePoint de xeito que todo encaixa dentro da nosa arquitectura de información perfectamente deseñado?

Moitas veces, o suficiente, este non é un problema tan difícil, porque nós mesmos ámbito de problemas: "We don’t care about anything more than 3 months old." "We’ll handle all that old stuff with keyword search and going-forward we’ll do it the RIGHT way…" Etc.

Pero, what happens if we can’t scope ourselves out of trouble and we’re looking at 10’s of thousands or 100’s of thousands (ou mesmo millóns) de docs — a carga e reserva de que é o noso desexo devoto?

Rápido pode ser a resposta.

Proceso de procura da FAST inclúe unha serie de partes móbiles, pero unha visión simplificada é este:

  • Un proceso rastreador busca por contido.
  • Atopa contido e entrega-lo a un proceso corrector que xestiona un pool de procesadores de documentos.
  • Proceso Broker entrega-lo para un dos procesadores de documentos.
  • O procesador analiza o documento e o documento por medio dun proceso de oleoduto, analiza o bejeezus fóra do documento e entrega-lo a un proceso de tipo constructor índice.

O rápido nave, we have a lot of control over the document processing pipeline. We can mix and match about 100 compoñentes de Segmentación e, o máis interesante, we can write our own components. Like I say, FAST is analyzing documents every which way but Sunday and it compiles a lot of useful information about those documents. Those crazy FAST people are clearly insane and obsessive about document analysis because they have tools and/or strategies to REALLY categorize documents.

Así … usar o FAST en combinación co noso propio compoñente Segmentación personalizado, we can grab all that context information from FAST and feed it back to MOSS. It might go something like this:

  • Documento aliméntase en FAST Moss.
  • Normal tolo obsesivo análise de documentos rápida e categorización pasa.
  • Noso propio compoñente Segmentación personalizado cae algunhas desas información fóra de contexto para unha base de datos.
  • Un proceso de noso propio proxecto le a información de contexto, fai que algunhas decisións sobre como encaixar ese documento Moss dentro do noso IA e marca-lo usando un servizo web eo modelo de obxecto.

Por suposto, ningún proceso automatizado pode ser perfecto, pero grazas ao obsesivo (e, posiblemente, insano-mais-en-un-bo-como a xente rápidas), podemos ter unha loita real filmado nun proceso de subida masiva verdadeiramente eficaz que fai máis que encher unha base de datos SQL con unha morea de documentos mal-searchable.

</final>

Rexístrate para o meu blog.

Technorati Tags: , ,

Aprendendo Sobre usuarios finais, a www.EndUserSharePoint.com

Mark Miller sobre a http://www.endusersharepoint.com construíu, na miña experiencia, the best end-user focused SharePoint site in the ‘sphere. In the last month, he has enlisted some of the premier end-user focused bloggers around to contribute to the "front page" nunha base regular, incluíndo, pero non limitado a Paul Culmsee, Chris rápida, e Dessie Lunsford. He has others lined up and ready to contribute as their schedules allow.

Eu pulei na oportunidade de participar e meu post inaugural é aquí. I’m writing a series on how to use SharePoint Designer to create first-class business workflow solutions. In keeping with the EUSP.com’s focus, os artigos manterá sempre a cabeza do usuario final e centro.

Eu, persoalmente, tenden a dividir o mundo SharePoint en tres grandes grupos: SharePoint consultants, full-time SharePoint staff developers and end users. When I write, Moitas veces pregúntome, cal destes grupos podería estar interesado no tema? Most often, Eu acabo de escribir para as dúas primeiras (técnico) grupos, sobre todo porque eu son un consultor de min; it’s always easier and more authentic to write about those things with which you’re most familiar on a personal level.

Como xa observei antes, a comunidade de usuario final é moi, far larger than the technical community. EUSP.com is top-notch and I heartily recommend it to all three groups. The site’s laser focus is obviously valuable to end users. Con todo, we developers and consultants can only be better at our profession if we can understand and effectively respond to the needs of the end users we serve. I know I need all the help I can get 🙂 Consulte.

</final>

Rexístrate para o meu blog.

Invocando Servizos SSRS web de WSS / Moss en Medio Ambiente FBA

Necesitabamos de invocar a CreateSubscription "" method on an SSRS web service that is hosted in an FBA managed MOSS environment from a custom web part. We kept getting variations of:

  • 401: Non autorizado
  • Obxecto Movido

O obxecto "movida" mensaxe era máis interesante porque estaba dicindo que o obxecto "" (noso servizo SSRS) habían "movido" to login.aspx. This clearly meant we had some kind of authentication problem.

Eu finalmente entender que eu tiña marcada unha entrada de blog by Robert Garret that described how to invoke a general purpose WSS/MOSS web service living inside an FBA environment. Note that I can’t link directly to the article (a partir de 06/09/08) because it wants to authenticate. The link I provide brings you to an "all posts" view and you can locate the specific article by searching for "Accessing MOSS Web Services using Forms Based Authentication".

Aquí está o código que funcionou para nós:

ReportingService2006 rs = nulo; 
// Acceder ao sistema Autenticación auth = novo Autenticación(); 
auth.Url = "http://URL / _vti_bin / Authentication.asmx";
auth.CookieContainer =
novo CookieContainer();
Resultado LoginResult = auth.login("userid", "password");
se (result.ErrorCode == LoginErrorCode.NoError) 
{
// Non hai erros, co fin de conseguir as cookies.
Galletas CookieCollection = auth.CookieContainer.GetCookies(novo Uri(auth.Url));
Biscoito authCookie = galletas[result.CookieName];
rs =
novo ReportingService2006();
rs.Url =
"http://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs.CookieContainer =
novo CookieContainer();
rs.CookieContainer.Add(authCookie);
}
intentar
{
  rs.CreateSubscription(denunciar, extSettings, desc, eventType, matchData, parameters1);
}
incorporarse (Exception ex)
{
  Console.WriteLine(ex.Message.ToString());
}

Eu interpreto que as cousas funcionen como esta:

  • Nosa parte web que chamar o servizo de identificación e dicir, "Hey, Tony, son eu!".
  • Mensaxes servizo de autenticación dicindo, "Hey, I know you. How are the kids? Here’s a token."
  • Chamamos o servizo SSRS e dicir, "Tony sent me, aquí está o token."

</final>

Rexístrate para o meu blog.

Xa realizou a súa análise Busca Mensual?

É unha boa práctica, probabelmente aínda unha práctica recomendada, para revisar a súa investigación relata unha vez ao mes e buscar oportunidades para engadir mellores apostas, tune your thesaurus and maybe even uncover some business intelligence that is otherwise hidden to management.

It’s already the 3rd of the month. Time’s awastin’ 🙂

</final>

Rexístrate para o meu blog.