</ბოლო>
ივნისი 2008 SUGDC კონფერენცია — ეს არის ის, არარსებული
ვესწრებოდი ჩემი პირველი SharePoint კონფერენცია 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, მე მქონდა ენერგია უნდა გააკეთოს ლამაზი გაშვება tread წისქვილზე და შემდეგ, კიდევ უფრო გასაკვირი, 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 წუთი 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, მე გვაკავშირებს ამ ინფორმაციას ჩემს სერია დასრულდა 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. Luckily, Q&იყო ცოცხალი, no doubt helped by the fact that it was early morning before lunch. Q&A is my favorite part of any presentation.
საინტერესო საგნები და ვიმედოვნებ, რომ წაკითხვა მათ შესახებ უფრო დეტალურად ამ კვირაში (დრო ნებართვების, როგორც ყოველთვის). 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) ამისთვის 3 ან 4 საათი (და რომ, შემდეგ მე დაასრულა სასმელი ერთი ღამით). I don’t often get to talk about Farscape ან Babylon 5 ერთად Kansas City მაცხოვრებლები.
ბობ Fox იქ იყო და როგორც ყოველთვის, არის whirlwind of intros, chats and just plain frenetic energy. He invited me to Saturday breakfast with Sahil Malik and that was great.
შაბათი (დღეს 2), მაიკ Lotter ისხდნენ თავად კონფერენციაზე საუბარი InfoPath და შემდეგ იგი Becky დროს დღის ბოლომდე უნდა გავაკეთოთ ერთგვარი ზოგადი Q&სხდომაზე შესახებ 30 to 45 წუთის ძირითადი აქცენტი კეთდება 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" წინ მიდის.
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. და ბოლოს, საჯაროდ მინდა მადლობა გადავუხადო გარი 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, ეს შესანიშნავი შეხვედრის up ყველა იმ ხაზზე პიროვნებებს თქვენ ცნობილია მეშვეობით დღიურები, twitter, ფორუმებში, და ა.შ..
</ბოლო>
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 (განსხვავებით embedding მომხმარებლის ID in SQL შეკითხვაზე ან სხვა მიდგომა).
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, გამო უკეთესი სიტყვა, manually impersonating an AD user so that we could connect to SQL such that SQL data level security works.
მიუხედავად იმისა, რომ FBA არის ASP.NET ფუნქცია, ჩვენ SharePoint Nation ადამიანი ისწავლება სხვადასხვა საძიებო რომ თუ თქვენ 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.
რა თქმა უნდა, იკვლევს ამ, ჩვენ ხელახლა წაიკითხავს ამ მუხლის: ASP.NET Impersonation
დამატებითი კვლევები მიგვიყვანა ამ codproject მუხლის: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx
ეს დაგვეხმარა წერენ ჩვენი კოდი, which I’ve included below. It’s not the most elegant stuff, but it worked. I hope you find it helpful.
აი კოდი, რომელიც მუშაობდა ჩვენთვის:
დაცული ბათილად btnSearchCarrier_Click(ობიექტის გამგზავნი, EventArgs e) { ვცდილობთ { U = ImpersonateUser ახალი ImpersonateUser(); // ყველა: ჩანაცვლება მიდგომებით ("DomainName", "UserName", "Password"); // კოდი // iU.Undo(); } დაჭერა (გამონაკლისი ყოფილი) { } } // გამოყენება Impersonation კლასი როგორც ქვემოთ მითითებულ. საჯარო კლასი ImpersonateUser { [DllImport("advapi32.dll", SetLastError = ნამდვილი)] საჯარო სტატიკური გარე bool LogonUser( სიმებიანი lpszUsername, სიმებიანი lpszDomain, სიმებიანი lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); [DllImport("kernel32.dll", ცხრილი = CharSet.Auto)] შეტყობინების გარე სტატიკური bool CloseHandle(IntPtr სახელური); შეტყობინების სტატიკური IntPtr tokenHandle = ახალი IntPtr(0); შეტყობინების სტატიკური WindowsImpersonationContext impersonatedUser; // თუ თქვენ ჩართული ამ კოდი შევიდა DLL, რა თქმა უნდა მოითხოვოს, რომ იგი // ეშვება ერთად FullTrust. [PermissionSetAttribute(SecurityAction.Demand, სახელი = "FullTrust")] საჯარო ძალადაკარგულად Impersonate(სიმებიანი DomainName, სიმებიანი ნიკი, სიმებიანი დაგავიწყდათ) { ვცდილობთ { // გამოყენება უმართავი LogonUser ფუნქცია მისაღებად შესახებ ნიშნად for // მითითებულ შესახებ, დომენის, და პაროლი. const int LOGON32_PROVIDER_DEFAULT = 0; // გამსვლელი ამ პარამეტრის იწვევს LogonUser რათა შეიქმნას პირველადი ნიშნად. const int LOGON32_LOGON_INTERACTIVE = 2; tokenHandle = IntPtr.Zero; // ნაბიჯი -1 ზარის LogonUser მოპოვება handle to დაშვების ნიშნად. bool returnValue = LogonUser( ნიკი, დომენი, დაგავიწყდათ, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ქონების tokenHandle); // tokenHandle - უსაფრთხოების ახალი ნიშნად თუ (ყალბი == returnValue) { int ret = Marshal.GetLastWin32Error(); Console.WriteLine("LogonUser call failed with error code : " + უფლება); სახიფათოა ახალი System.ComponentModel.Win32Exception(უფლება); } // ნაბიჯი - 2 WindowsIdentity newId = ახალი WindowsIdentity(tokenHandle); // ნაბიჯი -3 impersonatedUser = newId.Impersonate(); } დაჭერა (გამონაკლისი ყოფილი) { Console.WriteLine("Exception occurred. " + ex.Message); } } /// <შემაჯამებელი> /// წყვეტს impersonation /// </შემაჯამებელი> საჯარო ძალადაკარგულად გაუქმება() { impersonatedUser.Undo(); // გასათავისუფლებლად სიმბოლოს. თუ (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 (მთავარი ფუნქცია, რომ ჭკვიანი lookup წლის მაჩვენებლის რამდენიმე ათასი საძიებო ღირებულებების უკან).
ეს მუშაობდა დიდი განვითარება გარემოს არამედ შესახებ მიღების ტესტირებაში (UAT) გარემოს, it wouldn’t work. Firing up the debugger, ჩვენ ვხედავთ გამონაკლისი დეტალების მსგავსი:
უფლებას მომხმარებლის UAT_domain mosssvc "არასაკმარისია ამ ოპერაციის.(rsAccessDenied).
თუ ცოცხალი ძებნა ზემოთ შეცდომა, 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.
ჩვენს შემთხვევაში, 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, დამატების ვებგვერდი ნაწილი და რომ მოგვარდება ჩვენი პრობლემა.
იმედია ამ გადაარჩენს ვინმეს საათი ან ორი ქვემოთ ხაზი.
</ბოლო>
გადავწყვიტოთ: მისასვლელი SharePoint საიტის დაყრის [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, but "suddenly" unrelated საიტი გახდა ძალიან ნელი და ხშირად დროული ერთად ეს შეცდომა:
[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 სანდო ?შინაარსი = 1 გამართვის ტექნიკით, მე რეალურად იპოვოს 11 ვებ ნაწილების გვერდზე, only two of which were visible. Even better (ეხლა let's-იმედი-I-იპოვოს რაც-მახინჯი-აქ, რომ-I-შეუძლიათ-დაფიქსირება პერსპექტივა), three of those closed web parts had a name of "Error".
მე ამოღებულია იმ ვებ ნაწილების (რაც თავისთავად აიღო საოცრად დიდი ხანია) and that solved the problem. For today 🙂
</ბოლო>
In კლასის სწრაფი ტრენინგი შესანიშნავი
მე დაწყებული დღე 4 სწრაფი-ს პარტნიორ სასწავლო ხელმძღვანელობდა მიერ Larry Kaye აქ Needham, სამაგისტრო.
ეს 5 დღიანი სხდომა ჩაიშალა შევიდა კლასების (3 და 2 დღის შესაბამისად) entitled "FAST ESP: განვითარებად საბაჟო ძიება განაცხადები ალიანსი პარტნიორები I" and "FAST ESP: Developing Custom Search Applications for Alliance Partners II".
ეს არის ნამდვილი boot camp ტიპის კლასი. მასალა ღრმა (ძალიან, ძალიან ღრმა). ინსტრუქტორი (Larry) აშკარად იცის მისი პერსონალის. I highly recommend this training if you considering it.
</ბოლო>
SharePoint და სწრაფი — Reese-ის Peanut კარაქი თასი საწარმოთა პროგრამები?
მე დავამთავრე up დღეში 2 სწრაფი ტრენინგი მზიანი Needham, სამაგისტრო, და მე bursting ერთად იდეები (რომელშიც ყველა კარგი სასწავლო კლასების გაკეთება ჩემთვის). 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" მივიღებთ ის ჩემი უფროსი.
ჩვენ SharePoint WSS 3.0 / MOSS განმახორციელებელი ხშირად წინაშე მკაცრი პრობლემა ნებისმიერი გონივრულად ზომის SharePoint პროექტი: როგორ უნდა მიიღონ ყველა untagged მონაცემები ჩაიტვირთება SharePoint ისეთი, რომ ეს ყველაფერი ჯდება ჩვენს კარგად შემუშავებული ინფორმაციის არქიტექტურის?
საკმაოდ ხშირად, ეს არ არის ისეთი რთული პრობლემა, რადგან ჩვენ ფარგლებს საკუთარ თავს out of trouble: "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 (ან თუნდაც მილიონობით) საქართველოს Docs — დატვირთვა და ჭდეებისთვის რომლის ჩვენი devout სურვილი?
სწრაფი შეიძლება იყოს პასუხი.
სწრაფი ის საძიებო პროცესი მოიცავს უამრავ მოძრავი ნაწილები, მაგრამ ერთი გამარტივებული შეხედულება ამ:
- Crawler პროცესი ეძებს შინაარსი.
- იგი მიიჩნევს, შინაარსი და ხელში off to საბროკერო პროცესი, რომელიც მართავს აუზი დოკუმენტი პროცესორები.
- საბროკერო პროცესი ხელში off ერთ დოკუმენტში პროცესორები.
- დოკუმენტის პროცესორი აანალიზებს დოკუმენტი და მეშვეობით მილსადენის პროცესი, აანალიზებს bejeezus გარეთ დოკუმენტი და ხელში off to ინდექსი მშენებელი ტიპის პროცესი.
On starship 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.
ასე რომ, … გამოყენებით სწრაფი ერთად ჩვენი საკუთარი მილსადენის კომპონენტი, we can grab all that context information from FAST and feed it back to MOSS. It might go something like this:
- დოკუმენტი, რომელიც იკვებება შევიდა სწრაფი from MOSS.
- ნორმალური crazy-obsessive სწრაფი დოკუმენტი დამუშავების და კატეგორიზაციის ხდება.
- ჩვენი საკუთარი მილსადენის კომპონენტი მცირდება ზოგიერთი კონტექსტში ინფორმაციის off to მონაცემთა ბაზა.
- პროცესში საკუთარი დიზაინი ნათქვამია კონტექსტში ინფორმაცია, აკეთებს რაღაც გადაწყვეტილება, თუ როგორ უნდა მოერგოს რომ MOSS დოკუმენტის ჩვენს ია და აღნიშნავს ის გამოყენებით ვებ სერვისი და ობიექტური მოდელის.
რა თქმა უნდა, ასეთი ავტომატიზირებული პროცესი შეიძლება იყოს სრულყოფილი რომ არა obsessive (და შესაძლოა გიჟური, მაგრამ, in-, კარგი გზა სწრაფი ადამიანი), ჩვენ შეიძლება ჰქონდეს რეალური საბრძოლო ესროლეს მართლაც ეფექტური მასის დატვირთვის პროცესი, რომელიც არ მეტი, ვიდრე უბრალოდ შეავსოთ SQL მონაცემთა ბაზა რამოდენიმე ძლივს-საძიებო დოკუმენტები.
</ბოლო>
სწავლის შესახებ ბოლომდე მომხმარებლებს ამავე www.EndUserSharePoint.com
მარკ მილერი დასრულდა http://www.endusersharepoint.com ააშენა, ჩემი გამოცდილება, 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" რეგულარულად, მათ შორის, მაგრამ არ შემოიფარგლება პოლ Culmsee, კრის სწრაფი, და Dessie Lunsford. He has others lined up and ready to contribute as their schedules allow.
მე გადახტა შანსი მიიღოს მონაწილეობა და ჩემი პირველი პოსტი აქ. 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, იმ სტატიებს ყოველთვის შენარჩუნება საბოლოო მომხმარებლის წინაშე და ცენტრალურ.
პირადად მე, როგორც წესი, დაყოფის SharePoint მსოფლიოს სამ ფართო ჯგუფები: SharePoint consultants, full-time SharePoint staff developers and end users. When I write, მე ხშირად ითხოვენ თავს, რაც ამ ჯგუფის შეიძლება დაინტერესებული სათაური? Most often, მე დასრულდება მდე წერა პირველი ორი (ტექნიკური) ჯგუფები, ძირითადად იმიტომ, რომ მე ვარ კონსულტანტი თავს; it’s always easier and more authentic to write about those things with which you’re most familiar on a personal level.
როგორც მე აღნიშნა, ადრე, საბოლოო მომხმარებლის თანამეგობრობის ბევრად, 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 🙂 შეამოწმეთ იგი out.
</ბოლო>
არა მარტო აპელირებს SSRS ვებ სერვისები WSS / MOSS in FBA გარემო
We needed to invoke the "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: არ
- ობიექტის გადატანილი
The "object moved" message was most interesting because it was saying that the "object" (ჩვენი SSRS მომსახურება) had "moved" to login.aspx. This clearly meant we had some kind of authentication problem.
მე საბოლოოდ მიხვდა, რომ მე მქონდა ჩანიშნული წაკითხვა შესვლის 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 რს = ნულოვანი; // სინამდვილის ავთენტიფიკაცია auth = ახალი ავთენტიფიკაცია(); თუ (result.ErrorCode == LoginErrorCode.NoError) ვცდილობთ { rs.CreateSubscription(ანგარიშს, extSettings, დაღმ, eventType, matchData, parameters1); } დაჭერა (გამონაკლისი ყოფილი) { Console.WriteLine(ex.Message.ToString()); } |
მე ინტერპრეტაცია რამ მუშაობა მოსწონს:
- ჩვენი ვებ ნაწილი უნდა აკრიფეთ up ავთენტურობის მომსახურება და აცხადებენ,, "Hey, ტონი, ეს მე ვარ!".
- ავთენტურობის მომსახურება გამოხმაურება ამბობდა, "Hey, I know you. How are the kids? Here’s a token."
- ჩვენ მოვუწოდებთ up 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’ 🙂
</ბოლო>