Կարգավիճակի արխիվներ: Sharepoint զարգացում

Բամբուկե Calendar շփվել է Sharepoint առաջացնում: «Եթե անսպասելի սխալ է կատարվել"

Այսօր, I’ve been working in an environment that uses a Bamboo calendar web part for some improved collaboration. This a standard medium/small farm with two load balanced WFEs, ա »դիմում սերվերի համար" ինդեքսավորման եւ InfoPath եւ clustered SQL ետ վերջ.

The client installed some disaster recovery software onto one of the WFEs and that resulted in a broken WFE for a specific site in the site collection. Whenever load balancing pointed at the affected WFE and that site, users saw a largely blank white screen with the sentence “An unexpected error occurred”. No other info showed, միայն այդ նախադասությունը.

They asked me to look at it. I easily reproduced the problem and then added a ?contents=1 to the end of the URL. This is how I learned they were using the Bamboo web part. I went back to the page and now, հանկարծ, դա ցույց տվեց ինձ մի գեղեցիկ պատշաճ error message:

image

Ես չգիտեմ, թե ինչ էր կատարվում, թե ինչ ես ստանալու վերահսկվող սխալի ուղերձ է ցույց տալ, բացառությամբ այն appending ?contents=1 bit of the query string.

Սա, թերեւս, շատ հազվադեպ բերան դեպքն է, բայց եթե դուք ստանում եք այդ ուղերձը, "Չի անսպասելի սխալ է կատարվել" գնալ առաջ եւ ավելացնել ?բովանդակության = 1 համարից հարցման պարանի եւ տեսնում այն, որ տանում է.

</վերջ>

Անդամագրվել իմ բլոգում.

Գտեք Twitter-ում http://www.twitter.com/pagalvin

Արորդիների Tags: ,

Օգտագործելով ռեֆլեկտոր եւ Microsoft.SharePoint.dll

Redgate .NET Reflector Michael Blumenthal արդեն համակերպվել է մասին հոդվածը Ահազանգով եւ տեսակետները ("Which views can be used when Creating an Alert ?"), which is interesting on its own merits. Սակայն, I was even more interested to see how he methodically walks through the process of using Redgate’s .NET Reflector. Step by step, he shows how to use that tool track down how SharePoint determines whether a view on a list should be "subscribable" բացակայության պատճառով ավելի լավ բառի (he explains this much better than I do 🙂 ).

Այս պահին է SharePoint դարաշրջանում, you’d almost have to be deaf and blind to have not heard or read about using that tool. It’s advanced stuff and my own sense is that it’s in many ways a tool of last resort. Սակայն, եթե կարծում եք, դուք պետք է այն, բայց իրականում չեն իմանա, թե ինչպես, Michael-ի գրել-up կարծես մի մեծ ձեռնարկը այս թեմային.

</վերջ>

Անդամագրվել իմ բլոգում.

Գտեք Twitter-ում http://www.twitter.com/pagalvin

Տեսակավորում Օրացույց նյութերն Օրացույց հայացք

I’m using a calendar to track panel discussions on a given day. I have two sessions: morning and afternoon. I want to create a view that shows morning sessions only listed alphabetically via a session ID. This is a little tricky to accomplish (եթե ես կարոտել մի բան ակնհայտ է իրական).

I can easily create a filtered view showing just that day’s events. The calendar will show all those events and if they all take place on the same hour, it lists them side by side in the hour slot. That’s great. The tricky part is that, ըստ կանխադրման, it wants to list them in ID format. Այնքան, if I add "Session 02" and then "Session 01" այդ օրացույցի, այն ցույց է տալիս նրանց: Այդ կարգի (i.e, Նիստ 02 ապա նիստ 01). To list them in Session ID order, Մտածեցի փորձել բաները:

  1. Configure the view using the web user interface. No luck. There are no options to sort items this way.

    Քանի որ չի աշխատել:, I am now hoping there’s a CAML query somewhere in there that will allow me to override the sort. CQWP lets me make that kind of change, գուցե օրացույցը կամք, ինչպես նաեւ?

  2. Թեման խմբագրել կայքի մասին, look for an "export" գործառույթը եւ … BZZZT! I can’t export its XML. There is no export option.

    I’m still holding out hope that I can find and modify some CAML query. Since I can’t export the web part, որ հեռանում Sharepoint դիզայներին.

  3. I add the calendar web part to a sandbox site and open that site using SharePoint Designer. I look at the markup for the web part and I find what I’m looking for. It’s encoded madness, բայց կա: "<ListViewXml …. >encoded խելագարություն</ListViewXml>". Մասնավորապես, կա այս գոհար:

<Հարցման>
<Որտեղ>
<DateRangesOverlap>
<FieldRef Name="EventDate"/>
<FieldRef Name="EndDate"/>
<FieldRef Name="RecurrenceID"/>
<Value Type="DateTime">
<Ամիս />
</Արժեք>
</DateRangesOverlap>
</Որտեղ>
<OrderBy><FieldRef Name="Session_x0020_ID" /></OrderBy>
</Հարցման>

(Ես decoded է &LT;Ի եւ &GT եւ բաժանել դրանք բազմաթիվ գծերի համար հստակեցումը ի փառս).

Ավելացնել <OrderBy> քիչ է եւ այժմ այն ​​տեսակի, ըստ լուս, այլ ոչ թե ներքին ցանկ Նյութի ID.

Հսկայական tip O’ որ hat է Becky Isserman իր մեկնաբանություն Isha Sagi ի բլոգը գրառմանը: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. I wouldn’t have put the <OrderBy> ճիշտ տեղում, առանց իր մեկնաբանության.

Հուսով եմ գրել մինչեւ դա ավելի հստակ է էկրանի կրակոցներով շուտով, բայց եթե ես երբեք չեմ անում, գոնե ես այսքանը.

</վերջ>

Sharepoint Նկարագրություն & Solutions կառավարում — Մի մոռացեք, որ U-ի CRUD (կամ D այդ հարցի վերաբերյալ)

Մենք միասին անցկացնել մեծ ժամանակի մտածողության մասին, Sharepoint լուծումների — թե ինչպես ստեղծել իրենց, որը գործիք օգտագործել, թե ինչ է տեղի ունենում, երբ նրանք չեն կարողանում տեղակայել, ժմչփ աշխատատեղեր, քարոզարշավի շրջանակներում, եւ այլն:. We spend so much time thinking about the up-front bits that it’s easy to forget that we need to retract them as well. Retracting solutions is probably more difficult, մի հայեցակարգային դիզայնի տեսանկյունից, than deploying them. Deployment is basically a cookbook affair. Typically, տեղադրելու հնարավորությունը, գուցե պետք է մի առանձնահատկություն ընդունիչ բեռնելու համար որոշ տվյալներ այդ ցուցակում, that sort of thing. Սակայն, retracting է պոտենցիալ ավելի բարդ.

Մի քանի լուծումը կարող է ստեղծել artifacts նման են:

  • Բովանդակության տեսակներ
  • Սայլակ Definition
  • Կայքի Definition
  • Տվյալները ցուցակի
  • Նույնիսկ ստացողի
  • InfoPath ձեւեր

Ցուցակը շարունակվում է.

Իսկ դա ակնհայտորեն կարեւոր է մշակել մի այնպիսի լուծում, որը instantiates այդ artifacts ճիշտ, it’s just as important to consider the update and delete cases. If your solution creates a new list and populates that list with data, թե ինչ է տեղի ունենում, երբ լուծումը չեղյալ հայտարարվեց? In some cases, the list should be deleted. In other cases, it should be left intact for historical purposes. Your business requirements will guide you to the right decision.

Օգնել հետ, create a matrix that lists each artifact your solution deploys to SharePoint. List three columns per artifact, մեկը ստեղծել, թարմացնել եւ ջնջել. For each case, որոշում է ճիշտ արդյունքի այդ գործողությանը.

This sort of analysis is obviously best done before the solution is ever deployed to a SharePoint farm. Սակայն, նման ծխելու, it’s never too late to start doing things correctly. Create that matrix and develop a plan to address the missing update/delete scenarios. It may be a hard problem to solve, բայց գոնե ձեզ պետք է տեղադրել մեկ տուփ ամբողջ խնդիրը.

</վերջ>

Անդամագրվել իմ բլոգում.

Գտեք Twitter-ում http://www.twitter.com/pagalvin

Արորդիների Tags:

Quick fix: Վեբ Ծառայություններ, որ հետ Sharepoint, InvalidOperationException

Մի միլիոն տարի առաջ, I helped developed a web service that was invoked via a custom action for a SharePoint Designer workflow. Այս շաբաթ, հաճախորդը ցանկանում է տեղափոխել այն արտադրանքի (վերջապես!) որ մենք արել.

ՀՀ մաքսային ակցիան աշխատել տուգանք, բայց ինտերնետային ծառայությունը: Այն վկայակոչվել չի, տալով մեզ այս խմբին:

System.InvalidOperationException: Այս գործողությունը կարող է կատարվել միայն համակարգչի որը միանում է սերվերի տնտեսություն օգտվողների կողմից, որոնք ունեն թույլտվությունների SQL Server կարդալ կազմաձեւման տվյալների բազա. Միանալու այս սերվերը պետք է սերվերի տնտեսություն, օգտագործել SharePoint ապրանքների եւ տեխնոլոգիաների Կազմաձեւ Wizard, որը գտնվում է Սկսել Start ընտրացանկից, Վարչական գործիքներ.
at Microsoft.SharePoint.Administration.SPWebApplication.Lookup(Uri requestUri)

Turns out that I forgot to add the service to the SharePoint application pool in IIS. Once I did that, այն է տուգանքով,.

Սա MSDN ֆորում պրոֆիլը Թարգմանել լեզվով Թարգմանված ինձ տեղյակ եմ, անհրաժեշտ: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</վերջ>

Անդամագրվել իմ բլոգում.

Հետեւեք ինձ twitter: http://twitter.com/pagalvin

Արորդիների Tags:

Արագ եւ հեշտ: Ստացեք SPFolder է SPItemList

Ես անընդհատ վազում են այս խնդրին, եւ Google չի թվում է հասկանալ, թե ինչ եմ ուզում անել, ես նախշավոր ես գրել, դա ցած.

Ես անում շատ միջոցառման ընդունիչ կարգաբերում վերջին շաբաթվա կամ երկու. The ER is defined against a document library. The individual items in the document library are tightly related to their parent folders. Այնքան, I am always getting the folder of the item for various manipulations. While debugging, Ես պետք է թարմացնել մետատվյալներ մի թղթապանակում կոնկրետ կետում, որի ID գիտեմ.

Ահա մի փոքր Console դիմումը (նախագծված է առաջադրվել սերվերի ֆերմայում) որ տանում է փաստարկներ: ՀՀ ID մի կետի, եւ մի արժեք է, նշանակում է, մի դաշտ, "Approval Status". It hard codes a lot of stuff and has no error checking.

Կոդը նայում էին ծանր կոդավորված կայքը, gets a hard coded document library and then finds the indicated item. It then finds the parent folder of that item and assigns the status value.

The key lesson here for me is that SPItem doesn’t get you access to the folder. You need to use SPListItem.File.

Եթե ​​որեւէ մեկը հոգում է առաջարկել քննադատություն, կամ առաջարկել ավելի լավ միջոց, որ թղթապանակը մի կետի, խնդրեմ թողնել մեկնաբանություն.

<համար>
օգտագործելով Համակարգ;
օգտագործելով System.Collections.Generic;
օգտագործելով System.Text;
օգտագործելով Microsoft.SharePoint;
օգտագործելով System.Collections;

անվանակարգ Conchango
{
    /// <ամփոփում>
 /// </ամփոփում>
 դաս ManualFolderUpdate
    {
        Ստատիկ անվավեր Հիմնական(լարային[] args)
        {
            լարային msh = "ManualFolderUpdate (v1.0): "; // msh = "Message Header"

 Մխիթարելու.WriteLine(msh + "Starting up.  Ես վերջին անգամ փոփոխվել է 08/04/08 -");

            լարային url = http://localhost/xyzzy;

            օգտագործելով (SPSite oSPSite = նոր SPSite(url))
            {

                օգտագործելով (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["Documents"];

                    Մխիթարելու.WriteLine(msh + "Got the document library.");

                    Մխիթարելու.WriteLine(msh + "Doc lib item count: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    լարային NewStatus = "Xyzzy";

                    FolderID = System.Փոխակերպել.ToInt32(args[0].ToString());
                    Մխիթարելու.WriteLine("Seeking folder for item: [" + FolderID + "].");

                    SPListItem li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Մխիթարելու.WriteLine(msh + "Got the parent folder.");

                    NewStatus = args[1].ToString();
                    Մխիթարելու.WriteLine("Setting status to [" + NewStatus + "].");

                    Մխիթարելու.WriteLine("Press return to commit the update or CTRL-C to abort.");

                    Մխիթարելու.ReadLine();

                    thisItemFolder.Item["Approval Status"] = NewStatus;
                    thisItemFolder.Item.Update();

                    Մխիթարելու.WriteLine(msh + "Finished updating the folder.  Փակել.");

                } // օգտագործելով SPWeb

            } // օգտագործելով SPSite

 Մխիթարելու.WriteLine(msh + "Finished.");

        } // Հիմնական

    } // Դուք foldersync
} // անվանակարգ
</համար>

</վերջ>

Անդամագրվել իմ բլոգում.

Արորդիների Tags:

Թաքցնելով մաքսային գործողություններ են Sharepoint

Մի քանի ամիս առաջ, իսկ աշխատում է մի նախագծի, որը հաճախորդին, I created a feature. Among other things, որ խաղարկային սահմանված գործարկողի գործողություն (դրանք հայտնվում են կայքի կարգավորումներում). The only purpose for this custom action was to demonstrate to me that the feature activation was working as expected. Հիմնականում, Ես օգտագործել այն որպես կոպիտ ձեւով կարգաբերում.

Շատ իմ շփոթություն, Այս կարգաբերում artifact է իր ուղին է dev մինչեւ UAT եւ արտադրության համար ինչ - որ մեկը ստացել շուրջ խնդրելով, "what is this xyzzy link?"

Առայժմ, մենք արտադրության, եւ ես, իրոք, չեմ ուզում տեղահանել հնարավորությունը, fix elements.xml and then reinstall.

Todd Bleaker pointed out an easy way to handle it. In his words:

"CustomActions are not copied into the database, դրանք կարդալ անմիջապես Elements.xml ֆայլը եւ պատճենված է հայտը պետական ​​եւ Runtime. Այնքան, Դուք չեք անհրաժեշտ է ապաակտիվացնել, տեղահանել, reinstall, եւ վերաակտիվացնել հնարավորությունը հանել CustomAction. Just հեռացնել այն Elements.xml ֆայլը եւ վերամշակել դիմումի լողավազան(s) իրականացվում. Հաջորդ անգամ առանձնահատկությունն այն է, շրջանակներում, Դուք չեք տեսնում CustomAction այլեւս."

Ես հետեւել նրա հրահանգներին եւ, Իհարկե, Նրանք աշխատում.

Իմ դեպքում,, this is a department level installation with just a single WFE. If you find yourself with this problem in future and with multiple WFE’s, Կարծում եմ, դուք պետք է կատարել փոփոխություն, յուրաքանչյուր.

</վերջ>

Անդամագրվել իմ բլոգում.

Արորդիների Tags: ,

Quick fix: Մուտք 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, սակայն «Հանկարծ" մի անկապ site շատ դանդաղ է եւ հաճախ է դրված դուրս գալ այդ սխալի:

[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 ?բովանդակության = 1 debug Տեխնիկա, Ես իսկապես գտնում 11 վեբ մասերի վրա էջ, only two of which were visible. Even better (մի let's-ի Հույսի-I-ի գտնել մի բան է տգեղ է, որ այստեղ-I-կարելի է ամրագրել, հեռանկարում), երեքը, այդ փակ վեբ մասերից էր անունը "Սխալ".

Ես այդ ջնջված վեբ մասեր (որն ինքն էլ զարմանալիորեն երկար) and that solved the problem. Այսօրվա համար

</վերջ>

Անդամագրվել իմ բլոգում.

Արորդիների Tags:

Invoking SSRS վեբ ծառայություններ From WSS / MOSS է 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: Ոչ լիազորված
  • Object տեղափոխվել

The "օբյեկտ է տեղափոխվել" ուղերձն այն էր, շատ հետաքրքիր, որովհետեւ ասում էր, որ «օբյեկտը" (մեր SSRS ծառայություն) էր "տեղափոխվել" 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" դիտել եւ դուք կարող եք տեղադրել նաեւ հատուկ հոդված - ի համար "Մուտք դեպի MOSS վեբ Ծառայություններից օգտվելու ձեւերը վրա վավերացման»:.

Ահա կոդը, որը աշխատել է մեզ համար:

ReportingService2006 RS = զրո; 
// Իսկությունը հաստատել Authentication auth = նոր Authentication(); 
auth.Url = "http :/://URL / _vti_bin / Authentication.asmx";
auth.CookieContainer =
նոր CookieContainer();
LoginResult արդյունք = auth.Login("Userid", "Գաղտնաբառ");
եթե (result.ErrorCode == LoginErrorCode.NoError) 
{
// Ոչ սխալ, որպեսզի ստանալ բլիթները.
CookieCollection բլիթները Դուք auth.CookieContainer.GetCookies(նոր Uri(auth.Url));
Cookie authCookie Դուք Տեղեկանիշ[result.CookieName];
RS =
նոր ReportingService2006();
rs.Url =
"http :/://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs.CookieContainer =
նոր CookieContainer();
rs.CookieContainer.Add(authCookie);
}
փորձել
{
  rs.CreateSubscription(հաշվետվություն, extSettings, desc, eventType, matchData, parameters1);
}
բռնել (Բացառություն են նախկին)
{
  Console.WriteLine(ex.Message.ToString());
}

Ես մեկնաբանել բաներ աշխատել այսպես:

  • Մեր վեբ մասը պետք է հավաքել մինչեւ իսկությունը ստուգելու ծառայության եւ ասել,, "Hey, Արիստոկրատական, դա ինձ!".
  • Իսկությունը ստուգելու սպասարկման պատասխան ասելով,, "Hey, I know you. How are the kids? Here’s a token."
  • Մենք կոչ ենք անում մինչեւ SSRS ծառայության եւ ասել,, "Tony ինձ, Ահա կտրոն."

</վերջ>

Անդամագրվել իմ բլոգում.

Արագ եւ Simple: Տրամադրում է վեբ կայք: Օգտագործելով Sharepoint օբյեկտային մոդելի C #

I tried searching for a little snippet code that would show how I can create a new SPWeb in a site collection. I didn’t find it as quickly or easily as I expected so I thought I’d slap together a little entry on the subject.

Այս կոդը ստեղծում է նոր Վիքի կայքը:

 SPSite siteCollection;

    siteCollection = նոր SPSite("Http :/://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("Xyzzy", "Xyzzy վերնագիրը Փնտրել",
        "Xyzzy նկարագիրը", 1033, SPWebTemplate.WebTemplateWIKI, սուտ, սուտ);

Իմ Սկզբնական որոնումները ձախողվեց, քանի որ ես էի փնտրում, արտահայտություններ, ինչպես «դրույթի վեբ կայքը օգտագործելով Sharepoint օբյեկտային մոդելը" and the like.

Եթե ​​դուք որոնել քանզի «Webs.Add()", ձեզ գտնել մի շարք խիստ օգտակար բլոգային գրառումները, MSDN articles and SDK documentation that go into depth on this subject. I definitely recommend Այս կայքը.

</վերջ>

Անդամագրվել իմ բլոգում.

Արորդիների Tags: