კატეგორია არქივი: SharePoint განვითარების

Bamboo კალენდარი ინტერაქციაში 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 და ეშვება 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, მოულოდნელად, ეს დამანახა ლამაზი მოწესრიგებული შეცდომა:

image

მე არ ვიცი, რა ხდებოდა ან რა მე მიიღოს კონტროლირებადი შეცდომა არიან, გარდა appending ?contents=1 bit of the query string.

ეს, ალბათ, ძალიან იშვიათი პირას შემთხვევაში, მაგრამ თუ თქვენ, რომ გაგზავნა, "მოულოდნელი შეცდომა" წავიდეთ წინ და დამატება ?შინაარსი = 1 შეკითხვის სიმებიანი და ვნახოთ, სად მივყავართ.

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin

პროგრამები Tags: ,

გამოყენება რეფლექტორი on Microsoft.SharePoint.dll

Redgate .NET Reflector Michael Blumenthal has put up an article about alerts and views ("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 🙂 ).

At this point in the SharePoint era, 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. თუმცა, if you think you need it but don’t really know how, Michael’s write-up seems like a great tutorial on this subject.

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს 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" to კალენდარში, იგი გვიჩვენებს მათ რომ წესრიგი (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" ფუნქცია და … Bzzz! 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 …. >კოდირებით madness</ListViewXml>". კერძოდ, აქ არის ამ gem:

<შეკითხვის>
<სად>
<DateRangesOverlap>
<FieldRef Name="EventDate"/>
<FieldRef Name="EndDate"/>
<FieldRef Name="RecurrenceID"/>
<Value Type="DateTime">
<თვე />
</ფასი>
</DateRangesOverlap>
</სად>
<Orderby><FieldRef Name="Session_x0020_ID" /></Orderby>
</შეკითხვის>

(მე გაშიფრული გამოჩნდება &ლ;ს და &gt და გაყოფილი მათ სხვადასხვა ხაზების სიწმინდე გულისთვის).

დამატება <Orderby> ცოტა და ახლა სახის by სხდომა ID, არ შიდა სიის ელემენტი ID.

Gigantic წვერი ან’ ქუდი Becky Isserman მისი კომენტარი Isha შაგი ნახვა დღიურში: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. I wouldn’t have put the <Orderby> სწორი ადგილი მის გარეშე კომენტარი.

იმედი მაქვს, დაწერა ეს ყველაფერი უფრო ნათლად ერთად ეკრანზე დარტყმები მალე, მაგრამ იმ შემთხვევაში, მე არასოდეს არ გააკეთებს, სულ მცირე მე ეს ბევრად.

</ბოლო>

SharePoint ფუნქციები & Solutions მართვა — არ უნდა დაგვავიწყდეს, U in ნაგვის (ან 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 პოტენციურად უფრო რთული.

მოცემული გადაწყვეტა შეიძლება შეიქმნას ნივთები ასეთი:

  • ინფორმაციის გაცნობის
  • სია განმარტება
  • საიტის განმარტება
  • მონაცემთა სიაში
  • მაშინაც კი, მიმღები
  • InfoPath ფორმები

სიის გაგრძელება.

მიუხედავად იმისა, რომ ეს აშკარად მნიშვნელოვანი შეიმუშაოს გადაწყვეტა, რომელიც instantiates იმ ნიმუშებს სწორად, 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, but at least you’ll have put a box around the problem.

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin

პროგრამები Tags:

გადავწყვიტოთ: ვებ სერვისი, რომ ურთიერთქმედება SharePoint, InvalidOperationException

მილიონი წლის წინ, I helped developed a web service that was invoked via a custom action for a SharePoint Designer workflow. ამ კვირაში, კლიენტს უნდოდა მისი გადატანა წარმოებას (საბოლოოდ!) ასე გავაკეთეთ.

საბაჟო ქმედება მუშაობდა ჯარიმა, მაგრამ ვებ სერვისი იგი მოიყვანა არ, გვაძლევს ეს შეცდომა:

System.InvalidOperationException: ეს ოპერაცია შეიძლება შესრულდეს მხოლოდ კომპიუტერი, რომელიც შეუერთდა სერვერზე ფერმა წევრებს, რომლებსაც აქვთ ნებართვების in SQL Server წაკითხვის კონფიგურაციის ბაზაში. დაკავშირება ამ სერვერზე სერვერზე ფერმა, გამოყენება SharePoint პროდუქტები და ტექნოლოგიები კონფიგურაციის ოსტატი, მდებარე დაწყება მენიუ ადმინისტრაციული ინსტრუმენტები.
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

</ბოლო>

გამოწერა ჩემი დღიური.

Follow me on Twitter: http://twitter.com/pagalvin

პროგრამები Tags:

სწრაფი და მარტივი: მიიღეთ SPFolder of SPItemList

მე შენარჩუნება გაშვებული შევიდა ეს პრობლემა და Google არასოდეს, როგორც ჩანს, მიხვდა, თუ რა მინდა, ამიტომ მე figured მინდა დაწერა ამ ქვემოთ.

მე აკეთებდა ბევრი ღონისძიება მიმღები გამართვის, ბოლო ორი კვირის. 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, I needed to update the metadata of a folder for a specific item whose ID I know.

Here’s a little console application (designed to run on server in the farm) that takes two arguments: the ID of an item and a value to assign to a field, "Approval Status". It hard codes a lot of stuff and has no error checking.

The code looks up a hard coded site, 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.

If anyone cares to offer a critique or suggest a better way to get the folder of an item, გთხოვთ დატოვოთ კომენტარი.

<code>
გამოყენებით სისტემები;
გამოყენებით System.Collections.Generic;
გამოყენებით System.Text;
გამოყენებით Microsoft.SharePoint;
გამოყენებით System.Collections;

სახელების სივრცე Conchango
{
    /// <შემაჯამებელი>
 /// </შემაჯამებელი>
 კლასი ManualFolderUpdate
    {
        სტატიკური ცნოს მთავარი(სიმებიანი[] args)
        {
            სიმებიანი msh = "ManualFolderUpdate (v1.0): "; // msh = "Message Header"

 Console.WriteLine(msh + "Starting up.  I was last modified on 08/04/08.");

            სიმებიანი url = http://localhost/xyzzy;

            გამოყენებით (SPSite oSPSite = ახალი SPSite(url))
            {

                გამოყენებით (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["Documents"];

                    Console.WriteLine(msh + "Got the document library.");

                    Console.WriteLine(msh + "Doc lib item count: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    სიმებიანი NewStatus = "xyzzy";

                    FolderID = System.Convert.ToInt32(args[0].ToString());
                    Console.WriteLine("Seeking folder for item: [" + FolderID + "].");

                    SPListItem li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Console.WriteLine(msh + "Got the parent folder.");

                    NewStatus = args[1].ToString();
                    Console.WriteLine("Setting status to [" + NewStatus + "].");

                    Console.WriteLine("Press return to commit the update or CTRL-C to abort.");

                    Console.ReadLine();

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

                    Console.WriteLine(msh + "Finished updating the folder.  Exiting.");

                } // using SPWeb

            } // using SPSite

 Console.WriteLine(msh + "Finished.");

        } // მთავარი

    } // class foldersync
} // სახელების სივრცე
</code>

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები 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. ძირითადად, I used it as a crude form of debugging.

Much to my embarrassment, this debugging artifact made its way from dev to UAT and to production before someone got around to asking, "what is this xyzzy link?"

ახლა, we’re in production and I really don’t want to uninstall the feature, 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, they are read directly from the Elements.xml file and copied into application state at runtime. ასე რომ,, you don’t need to deactivate, uninstall, reinstall, and reactivate the Feature to remove the CustomAction. Just remove it from the Elements.xml file and recycle the application pool(s) effected. The next time the Feature is in scope, you won’t see the CustomAction anymore."

I followed his instructions and, რა თქმა უნდა, they work.

ჩემს შემთხვევაში, 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, I believe you’ll have to make the change in each.

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags: ,

გადავწყვიტოთ: მისასვლელი 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 🙂

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags:

არა მარტო აპელირებს 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 = ახალი ავთენტიფიკაცია(); 
auth.Url = "http://URL / _vti_bin / Authentication.asmx";
auth.CookieContainer =
ახალი CookieContainer();
LoginResult შედეგი = auth.Login("userid", "password");
თუ (result.ErrorCode == LoginErrorCode.NoError) 
{
// არ შეცდომა, ასე რომ მიიღოს cookies.
CookieCollection cookies = auth.CookieContainer.GetCookies(ახალი Uri(auth.Url));
Cookie authCookie = ნაჭდევები[result.CookieName];
რს =
ახალი ReportingService2006();
rs.Url =
"http://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs.CookieContainer =
ახალი CookieContainer();
rs.CookieContainer.Add(authCookie);
}
ვცდილობთ
{
  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, აქ ნიშნად."

</ბოლო>

გამოწერა ჩემი დღიური.

სწრაფი და მარტივი: დებულება საიტის გამოყენება 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.

ეს კოდი ქმნის ახალ Wiki საიტი:

 SPSite siteCollection;

    siteCollection = ახალი SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy Title",
        "xyzzy description", 1033, SPWebTemplate.WebTemplateWIKI, ყალბი, ყალბი);

My initial searches failed because I was looking for phrases like "provision a web site using sharepoint object model" and the like.

თუ თქვენ ძებნის for "Webs.Add()", თქვენ მოვძებნოთ რაოდენობის ძალიან სასარგებლო blog entries, MSDN articles and SDK documentation that go into depth on this subject. I definitely recommend საიტი.

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags: