kategorie Argief: SharePoint Ontwikkeling

Bamboo Kalender Interaksie met SharePoint veroorsaak dat "'n Onverwagse fout het voorgekom"

Vandag, 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, 'n "aansoek bediener" vir kruip en Path en 'n cluster SQL agterkant.

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, net dat die vonnis.

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, skielik, Dit wys vir my 'n mooi ordelike foutboodskap:

image

Ek weet nie wat daar gebeur het of wat ek gedoen het om die beheerde fout boodskap aan ander as die aanbring van die te vertoon ?contents=1 bit of the query string.

Dit is waarskynlik 'n baie seldsame rand geval nie, maar as jy die boodskap, "'N Onverwagse fout het voorgekom" voort te gaan en voeg ?contents = 1 vir die soektog string en sien waar wat lei.

</einde>

Skryf in op my blog.

Volg my op Twitter http://www.twitter.com/pagalvin

Technorati Tags: ,

Die gebruik van Reflector op Microsoft.SharePoint.dll

Redgate .NET Reflector Michael Blumenthal het sit 'n artikel oor die waarskuwings en menings ("Which views can be used when Creating an Alert ?"), which is interesting on its own merits. Egter, 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" vir 'n gebrek van 'n beter woord (he explains this much better than I do 🙂 ).

Op hierdie punt in die 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. Egter, As jy dink dat jy dit nodig het, maar nie werklik weet hoe, Michael se skryf-up lyk soos 'n groot handleiding oor hierdie onderwerp.

</einde>

Skryf in op my blog.

Volg my op Twitter http://www.twitter.com/pagalvin

Die Sorteer Kalender Items in die Jaarboek View

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 (tensy ek iets gemis ware voor die hand liggend).

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, by verstek, it wants to list them in ID format. So, as ek byvoeg "Sessie 02" en dan "Sessie 01" na die kalender, dit toon dat hulle in daardie volgorde (d.w.z, Sessie 02 en dan Sessie 01). To list them in Session ID order, Ek het gedink hierdie dinge te probeer:

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

    Sedert wat nie werk nie, 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, miskien sal die kalender sowel?

  2. Verander die web deel, look for an "export" funksie en … 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, wat SharePoint Ontwerper verlaat.

  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, maar dit is daar: "<ListViewXml …. >gekodeer waansin</ListViewXml>". Spesifiek, daar is hierdie juweel:

<Query>
<Waar>
<DateRangesOverlap>
<FieldRef Naam = "EventDate" />
<FieldRef Naam = "EndDate" />
<FieldRef Naam = "RecurrenceID" />
<Waarde Type = "Datum Tyd">
<Maand />
</Waarde>
</DateRangesOverlap>
</Waar>
<OrderBy><FieldRef Naam = "Session_x0020_ID-" /></OrderBy>
</Query>

(Ek het gedekodeer die &Dit;Is en &GT's en verdeel hulle uit verskeie lyne ter wille van duidelikheid se).

Voeg die <OrderBy> bietjie en nou is dit allerhande deur sessie-ID, nie die interne lys item ID.

Reuse tip o’ die hoed Becky Isserman vir haar kommentaar na Isha SAGI se blog boodskap: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. I wouldn’t have put the <OrderBy> op die regte plek sonder haar kommentaar.

Ek hoop om dit meer duidelik skryf skerm skote binnekort, maar in die geval het ek nog nooit doen, ten minste ek het dit baie.

</einde>

SharePoint Features & Solutions Management — Moenie vergeet om die U in CRUD (of die D vir die saak)

Ons het gesamentlik spandeer 'n groot deel van die tyd te dink oor SharePoint oplossings — hoe om hulle te skep, instrument te gebruik, wat gebeur wanneer hulle nie aan te wend, timer werksgeleenthede, bestekke, ens.. 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, van 'n konseptuele ontwerp perspektief, than deploying them. Deployment is basically a cookbook affair. Typically, installering van 'n funksie, Miskien het 'n funksie ontvanger laai 'n paar data in 'n lys, that sort of thing. Egter, terugtrek, is potensieel meer komplekse.

'N gegewe oplossing kan skep artefakte soos hierdie:

  • Inhoud Tipe
  • Lys Definisie
  • Site Definisie
  • Data in 'n lys
  • Selfs ontvangers
  • Path vorms

Die lys gaan aan.

Terwyl dit is natuurlik belangrik om 'n oplossing te vind wat Instansieer die artefakte korrek te ontwerp, 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, wat gebeur wanneer die oplossing is teruggetrek? 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.

Om te help met hierdie, create a matrix that lists each artifact your solution deploys to SharePoint. List three columns per artifact, een vir skep, werk en te verwyder. For each case, bepaal die korrekte uitslag van die operasie.

This sort of analysis is obviously best done before the solution is ever deployed to a SharePoint farm. Egter, soos rook, 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, maar ten minste sal jy gestel het om 'n boks rondom die probleem.

</einde>

Skryf in op my blog.

Volg my op Twitter http://www.twitter.com/pagalvin

Technorati Tags:

Quick fix: Web Services wat interaksie met SharePoint, InvalidOperationException

'N miljoen jaar gelede, I helped developed a web service that was invoked via a custom action for a SharePoint Designer workflow. Hierdie week, die kliënt wou dit te skuif na produksie (uiteindelik!) so ons het.

Die persoonlike aksie gewerk boete, maar die web diens is dit opgeroep het nie, gee ons die fout:

System.InvalidOperationException: Hierdie operasie uitgevoer kan word net op 'n rekenaar wat verbind is aan 'n bediener plaas deur gebruikers wat regte in SQL Server om te lees van die konfigurasie databasis het. Hierdie bediener te koppel aan die bediener plaas, gebruik om die SharePoint produkte en tegnologie Configuration Wizard, geleë op die Start menu in Systeembeheer.
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, dit werk goed.

Dit MSDN forum plaas het my die idee wat ek nodig het: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</einde>

Skryf in op my blog.

Volg my op Twitter: http://twitter.com/pagalvin

Technorati Tags:

Vinnige en maklike: Kry SPFolder van SPItemList

Ek hou wat in hierdie probleem en die Google nooit lyk om te verstaan ​​wat ek wil doen, so het ek gedink ek sou dit neer te skryf.

Ek doen 'n lot van die gebeurtenis ontvanger ontfouting in die laaste week of twee. The ER is defined against a document library. The individual items in the document library are tightly related to their parent folders. So, I am always getting the folder of the item for various manipulations. While debugging, Ek nodig het om die metadata van 'n gids te werk vir 'n spesifieke item wie se ID Ek weet.

Hier is 'n bietjie troos aansoek (ontwerp is om uit te voer op die bediener in die plaas) neem twee argumente: die ID van 'n item en 'n waarde te wys na 'n veld, "Approval Status". It hard codes a lot of stuff and has no error checking.

Die kode lyk op 'n harde gekodeerde 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.

As iemand omgee om 'n kritiek aan te bied of om 'n beter manier om die gids van 'n item te kry voorstel, los 'n comment.

<kode>
die gebruik van Stelsel;
die gebruik van System.Collections.Generic;
die gebruik van System.Text;
die gebruik van Microsoft.SharePoint;
die gebruik van System.Collections;

namespace Conchango
{
    /// <opsomming>
 /// </opsomming>
 klas ManualFolderUpdate
    {
        statiese nietig Main(string[] argumente)
        {
            string MSH = "ManualFolderUpdate (v1.0): "; // MSH = "Boodskap Opskrif"

 Troos.WriteLine(MSH + "Begin.  Ek is vir die laaste wysiging was op 08/04/08.");

            string url = http://localhost/xyzzy;

            die gebruik van (SPSite oSPSite = nuwe SPSite(url))
            {

                die gebruik van (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList Docu Theek = oSPWeb.Lists["Dokumente"];

                    Troos.WriteLine(MSH + "Het jy die dokument biblioteek.");

                    Troos.WriteLine(MSH + "Doc lib item tel: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    string NewStatus = "Xyzzy";

                    FolderID = System.Skakel.ToInt32(argumente[0].ToString());
                    Troos.WriteLine("Op soek na die gids item: [" + FolderID + "].");

                    SPListItem Li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Troos.WriteLine(MSH + "Het die ouer-gids.");

                    NewStatus = argumente[1].ToString();
                    Troos.WriteLine("Stel status te [" + NewStatus + "].");

                    Troos.WriteLine("Druk opbrengs die update of Ctrl-C te pleeg om te stop.");

                    Troos.Read line();

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

                    Troos.WriteLine(MSH + "Klaar die opdatering van die gids.  Verlaat.");

                } // die gebruik van SPWeb

            } // die gebruik van SPSite

 Troos.WriteLine(MSH + "Klaar.");

        } // Main

    } // klas foldersync
} // namespace
</kode>

</einde>

Skryf in op my blog.

Technorati Tags:

Verberg Custom optrede in SharePoint

'N paar maande gelede, terwyl jy werk op 'n projek vir 'n kliënt, I created a feature. Among other things, dat die funksie gedefinieer 'n persoonlike aksie (verskyn onder settings). The only purpose for this custom action was to demonstrate to me that the feature activation was working as expected. Basies, Ek gebruik dit as 'n ruwe vorm van ontfouting.

Tot my verleentheid, hierdie debugging juweel wat sy weg van ontwikkeling te UAT en aan die produksie voor iemand het om te vra, "Wat is dit Xyzzy skakel?"

Teen hierdie tyd, ons is in die produksie en ek wil regtig nie om die funksie te verwyder, fix elements.xml and then reinstall.

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

"CustomActions nie gekopieer word in die databasis, hulle direk gelees van die Elements.xml lêer en kopieer na die aansoek staat tydens looptyd. So, jy hoef nie te deaktiveer, verwyder, installeer, en aktiveer die funksie die CustomAction te verwyder. Net dit verwyder van die Elements.xml lêer en herwin die aansoek swembad(s) bewerkstellig. Die volgende keer wat die funksie is in omvang, jy sal nie die CustomAction sien nie."

Ek het sy instruksies en, natuurlik, hulle werk.

In my geval, 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, Ek glo jy het die verandering in elk te maak.

</einde>

Skryf in op my blog.

Quick fix: Toegang tot SharePoint Site gooi [HttpException (0x80004005): Versoek uitgetel.]

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, maar "skielik" 'n onverwante plek het baie stadig en dikwels met hierdie fout uitgetel:

[HttpException (0x80004005): Versoek uitgetel.]

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 die betroubare ?inhoud = 1 debug tegniek, Ek het in werklikheid 11 die web dele op die bladsy, only two of which were visible. Even better (uit 'n let's-hoop-ek-kry-iets-lelike-hier-dat-ek-kan-los perspektief), drie van daardie geslote web dele het 'n naam van "Fout".

Ek verwyder die web dele (wat self het 'n verrassende lang tyd) and that solved the problem. For today 🙂

</einde>

Skryf in op my blog.

Technorati Tags:

Invoking SSRS Web dienste van WSS / Die MOSS in FBA Omgewing

Ons moes die "CreateSubscription te roep" 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: Nie gemagtig
  • Voorwerp het

Die voorwerp het" boodskap was baie interessant, want dit het gesê dat die "voorwerp" (ons SSRS diens) het geskuif" to login.aspx. This clearly meant we had some kind of authentication problem.

Ek het uiteindelik besef dat ek moes geboekmerk 1 blog inskrywing 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 (soos van 06/09/08) because it wants to authenticate. The link I provide brings you to an "all posts" sien en kan jy die spesifieke artikel vind deur te soek vir "Toegang tot MOSS Web Services deur gebruik te maak van Vorms verifikasie".

Hier is die kode wat vir ons gewerk het:

ReportingService2006 rs = nul; 
// Verifiëer Verifikasie auth = nuwe Verifikasie(); 
auth.Url = "http://URL / _vti_bin-/ Authentication.asmx";
auth.CookieContainer =
nuwe CookieContainer();
LoginResult gevolg = auth.Login("Id", "Password");
indien (result.ErrorCode == LoginErrorCode.NoError) 
{
// Geen fout, so kry die koekies.
CookieCollection koekies = auth.CookieContainer.GetCookies(nuwe Uri(auth.Url));
Koekie authCookie = koekies[result.CookieName];
rs =
nuwe ReportingService2006();
rs.Url =
"http://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs.CookieContainer =
nuwe CookieContainer();
rs.CookieContainer.Add(authCookie);
}
probeer
{
  rs.CreateSubscription(verslag, extSettings, desc, eventType, matchData, parameters1);
}
vang (Uitsondering ex)
{
  Console.WriteLine(ex.Message.ToString());
}

Ek interpreteer om dinge uit te werk soos hierdie:

  • Ons web deel moet inbel die verifikasie diens en sê, "Hey, Tony, dit is my!".
  • Verifikasie diens antwoorde sê, "Hey, I know you. How are the kids? Here’s a token."
  • Ons doen 'n beroep op die SSRS diens en sê, "Tony het my gestuur, hier is die bewys."

</einde>

Skryf in op my blog.

Vinnige en maklike: Voorsiening van 'n webwerf met SharePoint Object Model 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.

Hierdie kode skep 'n nuwe Wiki webwerf:

 SPSite siteCollection;

    siteCollection = nuwe SPSite("Http://conchang-o9l8qi");

    SPWeb W = siteCollection.OpenWeb();

    w.Webs.Add("Xyzzy", "Xyzzy Titel",
        "Xyzzy beskrywing", 1033, SPWebTemplate.WebTemplateWIKI, valse, valse);

My aanvanklike soektogte nie, want ek was op soek na woorde soos "voorsiening 'n webwerf met sharepoint voorwerp model" and the like.

As jy soek "Webs.Add()", vind jy 'n aantal baie nuttige blog inskrywings, MSDN articles and SDK documentation that go into depth on this subject. I definitely recommend hierdie werf.

</einde>

Skryf in op my blog.

Technorati Tags: