</fin>
Juin 2008 Conférence SUGDC — C'est un Wrap
J'ai assisté à mon premier jamais SharePoint conference la dernière fin de semaine et il a été une explosion.
Jeudi après-midi, J'ai conduit jusqu'à la Virginie, guidé par mon nouvellement acheté $50 GPS appareil plug-in chose à mon téléphone. L'appareil a été impeccable. Après les cinq heures de route, J'ai eu l'énergie nécessaire pour faire une belle course sur le moulin de la bande de roulement, puis, encore plus surprenant, a l'énergie de la tête au lobby pour apéro une publicité de l'orateur. Conférence n00b qui je suis, 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 🙂
A un moment difficile de dormir parce que je m'entretenais première chose vendredi AM. Nervosité, une sensation lancinante que je devais ajouter une diapositive à ma présentation et un salon de chat très inquiétant sur Animal Planet m'a gardé tard. Étant donné que je suis allé pour dormir tard, Je me suis naturellement levé tôt. Je n'ai ajouter une diapositive de l'architecture technique assez détaillée. C'était bien la peine, parce que le 25 minutes de Q&A aurait été très difficile sans elle. J'ai eu la chance d'obtenir le premier emplacement dans la piste technique. Sahil Malik devait initialement prendre la parole vendredi AM et j'allais prendre la parole samedi mais qu'il devait échanger fois. Cela m'a permis de faire ma présentation puis asseyez-vous et profitez tout va avant vendredi et samedi.
La présentation s'est bien passé. J'ai certainement la chambre pour l'améliorer. J'ai parlé de comment nous pouvons accéder à et utiliser des services web dans un flux de travail SharePoint Designer en utilisant une action personnalisée. Au fil du temps, J'ai attacheront cette information dans ma série spécial au EUSP.com pour les utilisateurs finaux, essayant d'obtenir la plupart de cet outil. J'ai soufflé à travers mes slides et démo en 35 minutes, à mon grand désarroi au moment. Heureusement, Q&A était animé, sans doute aidé par le fait qu'il était tôt le matin avant le déjeuner. Q&A est ma partie préférée de n'importe quelle présentation.
Il y avait beaucoup de sujets intéressants et j'espère pouvoir blog parler plus en détail cette semaine (temps le permet, comme toujours). Un camarade de CMS Watch fourni un examen très critique pourtant très optimiste de position de SharePoint sur le marché. Une discussion différente axée sur la rareté des ressources SharePoint et la difficulté que les recruteurs ont trouver bon talent qui est aussi "abordable" dans ce marché très serré. Le gars de CMS Watch dénommé le pool de ressources humaines de SharePoint comme étant comme une "guilde." Je suis principalement familier avec ce terme en termes MMORPG et il m'a donné un petit frisson, to be honest 🙂
Le point culminant de la Conférence était juste rencontre et rattrapage avec les gens que j'ai "connu" en ligne pendant un certain temps. Le meilleur était assis au bar avec Becky Isserman (MossLover) pour 3 ou 4 heures (et qui, après que j'ai eu fini de boire pendant la nuit). Je ne reçois pas souvent parler Farscape ou Babylone 5 avec les habitants de Kansas City.
Bob Fox était là et comme d'habitude, un tourbillon d'intros, chats et énergie frénétique tout simplement. Il m'a invité à déjeuner samedi avec Sahil Malik et c'était génial.
Samedi (Journée 2), Mike Lotter lui-même traîné à la Conférence pour parler d'InfoPath, puis il rejoint Becky à la fin de la journée pour faire une sorte de général Q&Une session pour tout 30 À 45 minutes se consacrées principalement sur InfoPath (Mike) et AJAX (Becky). Je voudrais Becky avait pu passer par sa présentation complète et formelle, mais je suis sûr que je vais faire une chance de voir que l'un de ces jours. J'ai l'impression qu'elle va être "frapper le circuit" aller de l'avant.
Je pourrais continuer encore et. Deux derniers points — l'objectif financier de la Conférence est d'amasser des fonds pour le réseau enfants-santé et il a grandi $5,000. C'était génial. Enfin, Je tiens à remercier publiquement Gary Blatt, Gary Vaughn et Bob Fox alerte me et de m'avoir permis de prendre la parole lors de la Conférence. Bien sûr, les deux Gary avait une équipe de personnes soutenant et en organisant et chacun d'entre vous ont été fantastiques. J'avais des attentes élevées avant je suis allé et qu'il valait mieux que j'espérais pour.
Rester sur le qui-vive pour la prochaine Conférence, prévue pour le 7 novembre et 8. Mis à part quelques grand contenu, C'est formidable pour rencontre avec toutes ces personnalités en ligne, que vous avez su à travers les blogs, Twitter, Forums, etc..
</fin>
FBA et SQL Server: Une histoire d'amour
Mon collègue a travaillé sur un composant WebPart dans un environnement de FBA. Entre autres choses, le composant WebPart tire des données de SQL server. Le grand plan de ce projet exige qu'un DBA configure la sécurité niveau de données dans SQL (par opposition à l'incorporation d'un ID utilisateur dans une requête SQL ou d'une autre approche).
Le problème est que SQL server ne sait rien notre environnement EEA, donc il ne peut pas nous faire confiance. Nous avons résolu ce problème en, faute d'un meilleur mot, passer manuellement pour un utilisateur AD afin que nous pourrions nous connecter à SQL telles que données SQL niveau sécurité travaux.
Bien qu'EEA est une fonctionnalité d'ASP.NET, nous, peuple de SharePoint Nation avons enseigné la recherche de divers moteurs que si vous vous interrogez pour FBA, vous voulez savoir comment configurer FBA dans SharePoint doit dire. Je n'ai pas trouver tout renseignement sur la façon d'activer un FBA orienté application ASP.NET pour communiquer avec SQL dans la façon dont nous avions besoin de trouver.
Dans le cadre des recherches sur ce, Nous re-lire cet article: Emprunt d'identité ASP.NET
Plus de recherche nous a conduit à cet article codproject: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx
Qui nous a aidé à écrire notre code, qui j'ai inclus ci-dessous. Il n'est pas les trucs plus chics, mais cela a fonctionné. J'espère que vous trouverez utile.
Voici le code qui a fonctionné pour nous:
protégé Sub btnSearchCarrier_Click(ByVal sender, EventArgs e) { Essayez { ImpersonateUser UI = Nouveau ImpersonateUser(); // TODO: Remplacer les informations d'identification iU.Impersonate(« DomainName », « Nom d'utilisateur », « Password »); // CODE // iU.Undo(); } captures (System.Exception ex) { } } // À l'aide de la classe de l'emprunt d'identité comme mentionné ci-dessous. public classe ImpersonateUser { [DllImport(« advapi32.dll », SetLastError = True)] public statique extern bool LogonUser( Chaîne lpszUsername, Chaîne lpszDomain, Chaîne lpszPassword, int dwLogonType, int dwLogonProvider, Réf IntPtr phToken); [DllImport(« kernel32.dll », CharSet = CharSet.Auto)] privé extern statique bool CloseHandle(Handle IntPtr); privé statique IntPtr tokenHandle = Nouveau IntPtr(0); privé statique WindowsImpersonationContext impersonatedUser; // Si vous intégrer ce code dans une DLL, n'oubliez pas d'exiger qu'elle // fonctionne avec FullTrust. [PermissionSetAttribute(SecurityAction.Demand, Nom = « FullTrust »)] public Impersonate Sub(chaîne NomDomaine, String userName, mot de passe de chaîne) { Essayez { // Utilisez la fonction non managée LogonUser pour obtenir l'utilisateur jeton // l'utilisateur spécifié, domaine, et le mot de passe. const int LOGON32_PROVIDER_DEFAULT = 0; // En passant ce paramètre provoque LogonUser créer un jeton principal. const int LOGON32_LOGON_INTERACTIVE = 2; tokenHandle = IntPtr.Zero; // Étape -1 Appeler LogonUser pour obtenir un handle sur un jeton d'accès. bool returnValue = LogonUser( nom d'utilisateur, nom de domaine, mot de passe, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, Réf tokenHandle); // tokenHandle - nouveau jeton de sécurité Si (== false returnValue) { int ret = Marshal.GetLastWin32Error(); Console.WriteLine(« Appel de LogonUser a échoué avec le code d'erreur : " + RET); jeter nouveau System.ComponentModel.Win32Exception(RET); } // Étape - 2 WindowsIdentity newId = Nouveau WindowsIdentity(tokenHandle); // Étape -3 impersonatedUser = newId.Impersonate(); } captures (System.Exception ex) { Console.WriteLine("Exception s'est produite. " + ex.Message); } } /// <Résumé> /// Emprunt d'identité s'arrête /// </Résumé> public Undo Sub() { impersonatedUser.Undo(); // Libérer les jetons. Si (tokenHandle != IntPtr.Zero) CloseHandle(tokenHandle); } }
</fin>
Ajout de la tradition: SSRS Me dit “rsAccessDenied”, Mais … Je dois vraiment accès
A quelques semaines de retour, Je travaillais avec mon collègue développeur sur un projet SQL Server Reporting Services plug-in pour MOSS. Il a été l'élaboration d'un composant WebPart qui fournit une fantaisie frontale au bon rapport (la caractéristique principale étant une recherche intelligente sur un paramètre à plusieurs valeurs consultables mille derrière elle).
Il travaillait beaucoup dans l'environnement de développement, mais dans les tests d'acceptation utilisateur (UAT) environnement, il ne fonctionne pas. Tirant vers le haut le débogueur, Nous verrions des détails de l'exception comme ceci:
Les autorisations accordées à l'utilisateur « UAT_domainmosssvc » sont insuffisantes pour effectuer cette opération.(rsAccessDenied).
Si vous effectuez une recherche direct sur l'erreur ci-dessus, vous trouvez que c'est assez fréquent. Effroyablement commune. Les causes de la pire espèce de commune parce qu'il a beaucoup de racine potentiels différents et solution proposée de tout le monde "se sent" droit. Nous avons essayé probablement tous.
Dans notre cas, le problème était que nous avions fait une sauvegarde/restauration de DEV à UAT. Quelque part dans les données, quelque chose se référait toujours à "DEV_domain" (au lieu de la mise à jour « UAT_Domain »). Nous avons créé un nouveau site, ajouter que le composant WebPart et qui a résolu notre problème.
J'espère que cela permettra d'économiser quelqu'un une heure ou deux sur la ligne.
</fin>
Quick Fix: Accès au Site SharePoint lève [HttpException (0x 80004005): Demande est dépassé.]
Un de mes collègues développeur travaille sur un projet de cette semaine et s'est heurtée à un problème de délai d'attente pendant qu'il travaillait sur la construction d'une partie web fou. Son composant WebPart a été très bien, mais "soudain" un site indépendant est devenu très lent et souvent dépassé avec cette erreur:
[HttpException (0x 80004005): Demande est dépassé.]
J'ai connecté et j'ai vu que plusieurs autres sites ont été très bien. Je me doutais bien qu'il y avait certains composants WebPart masqué sur la page et l'utilisation le fidèle ?contenu = 1 technique de débogage, J'ai trouvé en fait 11 composants WebPart sur la page, dont deux seulement étaient visibles. Encore mieux (d'un point de vue let's-hope-I-find-something-ugly-here-that-I-can-fix), trois de ces composants WebPart fermé avaient un nom de « Erreur ».
J'ai supprimé ces composants WebPart (qui elle-même s'est étonnamment longtemps) et qui a résolu le problème. Pour aujourd'hui 🙂
</fin>
Formation rapide en classe est Excellent
Je commence la journée 4 jeûne du partenaire de formation dirigé par Larry Kaye ici à Needham, MA.
Cette session de 5 jours se décompose en classes (3 et 2 jours respectivement) intitulé "FAST ESP: Développement d'Applications de recherche personnalisées pour Alliance partenaires I" et "FAST ESP: Développement d'Applications de recherche personnalisées pour les partenaires de l'Alliance II".
Il s'agit d'une classe de type real boot camp. Le matériel est profond (très, très profond). L'instructeur (Larry) connaît bien son affaire. Je recommande fortement cette formation si vous considérer.
</fin>
SharePoint et rapide — la Reese Peanut Butter Cups d'applications d'entreprise?
J'ai fini la journée 2 de formation rapide à Needham ensoleillé, MA, et je suis débordant d'idées (dont toutes les classes de bonne formation me faire). Un aspect particulier de rapide m'a pensée et je voulais écrire alors qu'il était encore frais et normal au quotidien "trucs" Il a poussé hors de ma tête.
Nous SharePoint WSS 3.0 / Les implémenteurs MOSS fréquemment confrontés à un problème difficile avec n'importe quel projet SharePoint-de taille raisonnable: Comment obtenons-nous toutes les données non balisées chargées dans SharePoint, telles que tout cela s'inscrit dans notre architecture de l'information parfaitement conçu?
Assez souvent, ce n'est pas un problème difficile parce que nous avons nous-mêmes portée hors de l'ennui: "Nous ne se soucient quoi que ce soit plus de 3 mois." "Nous occuperons de tout ce que vieux trucs avec recherche par mot-clé et dorénavant nous le ferons la bonne façon…" Etc..
Mais, que se passe-t-il si nous ne pouvons pas portée nous sortir du pétrin et nous cherchons à quelques dizaines de milliers ou des centaines de milliers (voire des millions) des docs — le chargement et marquage de qui est notre vœu pieux?
RAPIDE pourrait être la réponse.
Processus de recherche de FAST comprend un grand nombre de pièces mobiles, mais une vue simplifiée est la suivante:
- Un processus de robot d'indexation recherche contenu.
- Il trouve contenu et il transmet à un processus de courtier qui gère un pool de processeurs de document.
- Processus Broker il transmet à l'un des processeurs document.
- Le processeur de document analyse le document et via un processus de pipeline, analyse de la bejeezus depuis les documents et il transmet à un processus de type index builder.
Sur le vaisseau rapide, Nous avons beaucoup de contrôle sur le pipeline de traitement des documents. Nous pouvons mélanger et assortir tout 100 composants de pipeline et, plus intéressant encore, Nous pouvons écrire nos propres composants. Comme j'ai dit, FAST est une analyse de documents de tous les sens mais dimanche et il compile un grand nombre d'informations utiles sur ces documents. Ces fous rapides sont clairement fou et obsessionnelle sur l'analyse du document parce qu'ils ont des outils et/ou des stratégies vraiment classer les documents.
Si … l'utilisation rapide avec notre propre composant de pipeline personnalisé, Nous pouvons saisir toutes ces informations de contexte de rapide et flux retour à MOSS. Il pourrait aller quelque chose comme ça:
- Document est alimenté en rapide de MOSS.
- Fou-obsessionnel normale rapide de documents d'analyse et de catégorisation se passe.
- Notre propre composant de pipeline personnalisé supprime certaines de ces informations de contexte hors d'une base de données.
- Un processus de notre propre conception lit les informations de contexte, rend des décisions sur comment adapter ce document MOSS dans notre IA et la marque vers le haut à l'aide d'un service web et le modèle d'objet.
Bien sûr, aucun processus automatisé peut être parfait, mais grâce à l'obsession (et peut-être insane-but-in-a-good-way gens rapides), Nous pouvons avoir une vraie lutte contre coup à un processus de chargement de masse vraiment efficace qui plus que remplir une base de données SQL avec un tas de documents consultables à peine.
</fin>
Apprendre aux utilisateurs finaux à www.EndUserSharePoint.com
Mark Miller au http://www.endusersharepoint.com a construit, d'après mon expérience, le meilleur pour l'utilisateur final axé sur le site SharePoint dans la ' sphère. Le mois dernier, Il a enrôlé certains des blogueurs premier utilisateur final axé autour de contribuer à la première page"" sur une base régulière, y compris mais non limité à Paul Culmsee, Chris Quick, et Dessie Lunsford. Il a d'autres bordées et prêt à contribuer en tant que leurs horaires permettent.
J'ai sauté sur l'occasion de participer et mon premier post est ici. Je vous écris une série sur la façon d'utiliser SharePoint Designer pour créer des solutions de workflow de première classe affaires. En accord avec intention de la de EUSP.com, ces articles gardera toujours l'utilisateur final avant et au centre.
J'ai personnellement tendance à diviser le monde de SharePoint en trois grands groupes: Consultants SharePoint, les développeurs à temps plein de personnel de SharePoint et les utilisateurs finaux. Quand j'écris, Je me demande souvent, lequel de ces groupes pourraient être intéressés à l'objet? Plus souvent, Je finis par écrit pour les deux premiers (technique) groupes, principalement parce que je suis un consultant moi-même; C'est toujours plus facile et plus authentique à écrire au sujet de ces choses avec lesquelles vous n'êtes plus familier sur un plan personnel.
Comme je l'ai mentionné avant, la communauté de l'utilisateur final est loin, bien plus grande que la communauté technique. EUSP.com est excellent et je le recommande vivement à tous les groupes de trois. Foyer de laser du site est évidemment précieuse aux utilisateurs finaux. Cependant, nous les développeurs et consultants ne pouvons être mieux à notre profession, si nous pouvons comprendre et répondre efficacement aux besoins des utilisateurs finaux que nous servons. I know I need all the help I can get 🙂 Check it out.
</fin>
Services Web SSRS invoquant de WSS / MOUSSE en environnement EEA
Nous avions besoin d'invoquer la "CreateSubscription" méthode sur un service web Reporting Services qui est hébergé dans un FBA gérés environnement MOSS d'un composant WebPart personnalisé. Nous continuions obtenir des variations de:
- 401: Non autorisé
- Objet déplacé
Le « objet déplacé" message était plus intéressant car il disait que l'objet"" (notre service de Reporting Services) avait "bougé" vers login.aspx. Cela signifiait clairement que nous avons eu une sorte de problème d'authentification.
Finalement, j'ai réalisé que j'avais signet une entrée de blog par Robert Garret qui décrit comment appeler un service web WSS/MOSS usage général vivant à l'intérieur d'un environnement EEA. Notez que je ne peux pas accéder directement à l'article (comme des 06/09/08) parce qu'il veut authentifier. Le lien que je fournis vous amène à un "tous les messages" vue et vous pouvez localiser l'article spécifique en recherchant « Accessing MOSS Web Services utilisant l'authentification Forms Based ».
Voici le code qui a fonctionné pour nous:
ReportingService2006 rs = null; // Authentifier Authentification auth = Nouveau Authentification(); Si (résultat.ErrorCode == LoginErrorCode.NoError) Essayez { RS.CreateSubscription(rapport, extSettings, DESC, eventType, matchData, paramètres CLIENT1); } captures (System.Exception ex) { Console.WriteLine(ex.Message.ToString()); } |
J'interprète des choses à travailler comme ça:
- Notre WebPart doit composer le service d'authentification et de dire, "Hey, Tony, C'est moi!".
- Service d'authentification répond disant, "Hey, Je sais que vous. Comment sont les enfants? Voici un jeton."
- Nous appelons le service Reporting Services et dire, "Tony m'a envoyé, Voici le jeton."
</fin>
Avez vous effectué votre analyse mensuelle de la recherche?
C'est une bonne pratique, probablement même il est recommandé, pour consulter vos rapports de recherche une fois par mois et de chercher des occasions d'ajouter les meilleurs résultats, Accordez votre Thésaurus et peut-être même découvrir certains décisionnelle qui est caché dans le cas contraire à la direction.
C'est déjà le 3ème du mois. Awastin de temps’ 🙂
</fin>