</پایان>
ژوئن 2008 کنفرانس SUGDC — که قرار دادن
I attended my first ever SharePoint conference this past weekend and it was a blast.
بعد از ظهر پنج شنبه, من سوار کردن به ویرجینیا, هدایت من به تازگی خریداری شده $50 GPS appliance plug-in thing to my phone. The device was flawless. After the five hour drive, I had the energy to do a nice run on the tread mill and then, even more surprisingly, 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 minutes of 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. Over time, I will tie this information into my series over at EUSP.com for End Users trying to get the most use out of that tool. I blew through my slides and demo in 35 دقیقه, to my dismay at the time. خوشبختانه, Q&A was lively, no doubt helped by the fact that it was early morning before lunch. Q&A is my favorite part of any presentation.
There were many interesting subjects and I hope to blog about them in greater detail this week (time permitting, as always). 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 بکی Isserman (MossLover) برای 3 یا 4 hours (and that, after I had finished drinking for the night). I don’t often get to talk about Farscape یا Babylon 5 with Kansas City residents.
Bob Fox was there and as usual, is a whirlwind of intros, chats and just plain frenetic energy. He invited me to Saturday breakfast with Sahil Malik and that was great.
Saturday (day 2), Mike Lotter dragged himself to the conference to speak about InfoPath and then he joined Becky at the end of the day to do a sort of general Q&A session for about 30 به 45 minutes mainly focused on InfoPath (مخفف کلمه میکروفون) 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" going forward.
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. سرانجام, I want to publicly thank Gary Blatt, Gary Vaughn and Bob Fox for alerting me to and allowing me to speak at the conference. البته, 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, it’s terrific for meeting up with all those online personalities you’ve known through blogs, توییتر, forums, غیره.
</پایان>
FBA و SQL Server: یک داستان عاشقانه
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 (as opposed to embedding a user ID in a SQL query or some other approach).
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, for lack of a better word, manually impersonating an AD user so that we could connect to SQL such that SQL data level security works.
Even though FBA is an ASP.NET feature, we SharePoint Nation people have taught the various search engines that if you’re querying for 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.
In the course of researching this, we re-read this article: ASP.NET Impersonation
More research led us to this codproject article: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx
That helped us write our code, which I’ve included below. It’s not the most elegant stuff, but it worked. I hope you find it helpful.
در اینجا کدی که برای ما کار می کرد:
محفوظ void btnSearchCarrier_Click(object sender, EventArgs e) { امتحان { ImpersonateUser iU = جدید ImpersonateUser(); // TODO: Replace credentials iU.Impersonate("DomainName", "UserName", "Password"); // CODE // iU.Undo(); } گرفتن (سابق استثنا) { } } // Using Impersonation class as mentioned below. عمومی کلاس ImpersonateUser { [DllImport("advapi32.dll", SetLastError = درست)] عمومی ایستا extern bool LogonUser( String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); [DllImport("kernel32.dll", CharSet = CharSet.Auto)] خصوصی extern ایستا bool CloseHandle(IntPtr handle); خصوصی ایستا IntPtr tokenHandle = جدید IntPtr(0); خصوصی ایستا WindowsImpersonationContext impersonatedUser; // If you incorporate this code into a DLL, be sure to demand that it // runs with FullTrust. [PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")] عمومی void Impersonate(string domainName, string userName, string password) { امتحان { // Use the unmanaged LogonUser function to get the user token for // the specified user, domain, and password. const int LOGON32_PROVIDER_DEFAULT = 0; // Passing this parameter causes LogonUser to create a primary token. const int LOGON32_LOGON_INTERACTIVE = 2; tokenHandle = IntPtr.Zero; // Step -1 Call LogonUser to obtain a handle to an access token. bool returnValue = LogonUser( userName, domainName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle); // tokenHandle - new security token اگر (false == returnValue) { int ret = Marshal.GetLastWin32Error(); مثلا عدم("LogonUser call failed with error code : " + ret); پرتاب new System.ComponentModel.Win32Exception(ret); } // Step - 2 WindowsIdentity newId = جدید WindowsIdentity(tokenHandle); // Step -3 impersonatedUser = newId.Impersonate(); } گرفتن (سابق استثنا) { مثلا عدم("Exception occurred. " + ex.Message); } } /// <خلاصه> /// Stops impersonation /// </خلاصه> عمومی void Undo() { impersonatedUser.Undo(); // Free the tokens. اگر (tokenHandle != IntPtr.Zero) CloseHandle(tokenHandle); } }
</پایان>
اضافه کردن به فرهنگ: SSRS به من می گوید “rsAccessDenied”, اما … من واقعا نمی دسترسی دارند
چند هفته قبل, 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 (از ویژگی های اصلی مراجعه هوشمندانه بر روی یک پارامتر با ارزش چند هزار جستجو در پشت آن).
This was working great in the development environment but in the user acceptance testing (UAT) محیط, it wouldn’t work. Firing up the debugger, we would see exception details like this:
The permissions granted to user ‘UAT_domain\mosssvc’ are insufficient for performing this operation.(rsAccessDenied).
If you do a live search on the above error, 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" راست. We probably tried them all.
In our case, 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, added the web part and that solved our problem.
Hopefully this will save someone an hour or two down the line.
</پایان>
تعمیر سریع: دسترسی به سایت شیرپوینت می اندازد [HttpException (0x80004005): درخواست به پایان رسیده است.]
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, اما "ناگهان" سایت نامربوط شد بسیار آهسته است و اغلب با این خطا به پایان رسیده:
[HttpException (0x80004005): درخواست به پایان رسیده است.]
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 the trusty ?contents=1 debug technique, I did in fact find 11 web parts on the page, only two of which were visible. Even better (from a let’s-hope-I-find-something-ugly-here-that-I-can-fix perspective), three of those closed web parts had a name of "Error".
I deleted those web parts (which itself took a surprisingly long time) and that solved the problem. For today 🙂
</پایان>
آموزش در کلاس FAST عالی است
من شروع روز 4 آموزش شریک FAST توسط Larry Kaye رهبری در Needham, MA.
در این جلسه 5 روزه به طبقات شکسته است (3 و 2 روز بود) entitled "FAST ESP: توسعه نرم افزار جستجوی سفارشی برای همکاران اتحاد من" 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.
</پایان>
شیرپوینت و FAST — لیوان کره بادام زمینی ریس نرم افزار سازمانی?
من به پایان رسید تا روز 2 آموزش FAST در آفتابی Needham, MA, و من سرشار از ایده (که تمام کلاس های آموزش خوب به من). 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" تحت فشار قرار دادند آن را از سر من.
ما شیرپوینت WSS 3.0 / در مجریان MOSS اغلب مشکل سخت با هر پروژه شیرپوینت اندازه منطقی با آن مواجه است: چگونه می توانم تمام اطلاعات untagged لود شده به شیرپوینت به طوری که آن را همه در درون کاملا طراحی معماری اطلاعات ما متناسب با ما?
اغلب به اندازه کافی, این چنین یک مشکل سخت نیست چون ما خودمان را دامنه از مشکلات: "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.
اما, 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 (یا حتی میلیون ها) اسناد — در حال بارگذاری و برچسب زدن که آرزوی مؤمن ما است?
FAST ممکن است پاسخ.
فرایند جستجو FAST شامل بسیاری از قطعات در حال حرکت است، اما یک مشاهده ساده این است:
- روند خزنده به نظر می رسد برای محتوای.
- آن را پیدا کرد و آن دست کردن به یک روند کارگزار است که مدیریت یک استخر پردازنده های سند.
- فرایند کارگزار آن دست کردن به یکی از پردازنده های سند.
- پردازنده سند تجزیه و تحلیل سند و از طریق یک فرایند خط لوله, تجزیه و تحلیل bejeezus سند و آن دست کردن به یک ایندکس از نوع روند سازنده.
FAST کشتی فضایی, we have a lot of control over the document processing pipeline. We can mix and match about 100 اجزای خط لوله و, جالب, 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.
پس … با استفاده از FAST در ترکیب با خود جزء خط لوله سفارشی ما, we can grab all that context information from FAST and feed it back to MOSS. It might go something like this:
- سند به FAST از MOSS تغذیه.
- عادی دیوانه وسواسی تجزیه سند FAST و طبقه بندی اتفاق می افتد.
- خود را جزء خط لوله سفارشی ما قطره برخی از این اطلاعات زمینه را به پایگاه داده.
- فرایند طراحی خود ما اطلاعات متن را می خواند, باعث می شود برخی از تصمیم گیری در مورد چگونگی جا که سند خزه در داخل IA ما و نشانگر آن را با استفاده از یک وب سرویس و مدل شی.
البته, چنین فرآیند خودکار می تواند کامل باشد اما به لطف به وسواس (و مردم FAST احتمالا دیوانه اما در یک خوب راه), ما ممکن است یک جنگ واقعی عالی در یک فرآیند بار جرم واقعا موثر است که می کند بیشتر از فقط پر کردن یک پایگاه داده SQL با یک دسته از اسناد به سختی قابل جستجو.
</پایان>
یادگیری در مورد کاربران نهایی در www.EndUserSharePoint.com
مارک میلر در بیش از http://www.endusersharepoint.com has built, در تجربه من, the best end-user focused SharePoint site in the ‘sphere. در ماه گذشته, he has enlisted some of the premier end-user focused bloggers around to contribute to the "front page" را به صورت منظم, including but not limited to Paul Culmsee, کریس سریع, و Dessie Lunsford. He has others lined up and ready to contribute as their schedules allow.
I jumped on the chance to participate and my inaugural post is here. 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, those articles will always keep the End User front and center.
I personally tend to divide the SharePoint world into three broad groups: SharePoint consultants, full-time SharePoint staff developers and end users. When I write, I often ask myself, which of these groups might be interested in the subject? Most often, I end up writing for the first two (technical) groups, mainly because I’m a consultant myself; it’s always easier and more authentic to write about those things with which you’re most familiar on a personal level.
As I’ve noted before, the end user community is far, 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. اما, 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 🙂 آن را چک کنید.
</پایان>
احضارکمکدرمورد SSRS خدمات وب از WSS / خزه در محیط زیست FBA
ما نیاز به فراخوانی 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: مجاز
- شی منتقل شده
شی "منتقل شد" پیام جالب ترین به دلیل آن بود که شی "" (خدمات ما SSRS) بود "منتقل شد" to login.aspx. This clearly meant we had some kind of authentication problem.
در نهایت متوجه شدم که من تا به حال در bookmarked وبلاگ 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 (به عنوان 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".
در اینجا کدی که برای ما کار می کرد:
ReportingService2006 تومان = صفر; // اعتبار دادن تأیید هویت احرازهویت = جدید تصدیق(); اگر (result.ErrorCode == LoginErrorCode.NoError) امتحان { rs.CreateSubscription(گزارش, extSettings, نزولی, eventType, matchData, parameters1); } گرفتن (سابق استثنا) { مثلا عدم(ex.Message.ToString()); } |
من تفسیر چیزهایی شبیه به این کار می کنند:
- بخشی از وب ما نیاز به شماره گیری نمایید تا سرویس احراز هویت و می گویند, "Hey, تونی, آن را به من!".
- پاسخ احراز هویت سرویس گفت:, "Hey, I know you. How are the kids? Here’s a token."
- ما تماس بگیرید تا خدمات SSRS و می گویند, "Tony sent me, در اینجا کلمه رمز است."
</پایان>
آیا شما انجام تجزیه و تحلیل ماهانه جستجوی خود را?
این تمرین خوبی است, احتمالا حتی بهترین تمرین, برای این فایل نقد می نویسید: جستجوی خود را گزارش یک بار در ماه و به دنبال فرصت هایی را برای اضافه کردن بهترین شرط, 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’ 🙂
</پایان>