Flokkaskjalasafn: SharePoint Þróun

Bambus Dagatal Samskipti við SharePoint Orsök "Óvænt villa kom"

Í dag, 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, a "umsókn framreiðslumaður" fyrir flokkun og Infopath og clustered SQL bak endir.

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, bara að setningu.

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, skyndilega, það sýndi mér ágætur skipulegan villuboð:

image

Ég veit ekki hvað var að gerast eða hvað ég gerði til að fá stjórn villuboð til að sýna annað en auka við ?contents=1 bit of the query string.

Þetta er líklega mjög sjaldgæft brún raunin en ef þú færð þessi skilaboð, "Óvænt villa kom" fara á undan og bæta ?Innihald = 1 fyrirspurn band og sjá hvar það leiðir.

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter á http://www.twitter.com/pagalvin

Technorati Tags: ,

Using reflector á 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. Hins, 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" fyrir skort á betri orð (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. Hins, ef þú heldur að þú þarft það en í raun ekki vita hvernig, Michael skrifa-upp virðast eins og a mikill einkatími um þetta efni.

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter á http://www.twitter.com/pagalvin

Flokkun dagbókaratriði í dagbókarskjánum

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 (nema að ég missti eitthvað alvöru augljóst).

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, sjálfgefið, it wants to list them in ID format. Svo, ef ég bæta við "fundur 02" og þá "Session 01" í dagbók, það sýnir þá í því skyni (i.e, Fundur 02 og þá þing 01). To list them in Session ID order, Ég hélt að reyna þetta:

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

    Þar sem ekki vinna, 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, kannski dagbók mun svo?

  2. Breyttu vefur hluti, look for an "export" virka og … 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, sem fer SharePoint Designer.

  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, en það er það: "<ListViewXml …. >kóðuð Madness</ListViewXml>". Sérstaklega, það er þetta gimsteinn:

<Fyrirspurn>
<Hvar>
<DateRangesOverlap>
<FieldRef Nafn = "EventDate" />
<FieldRef Nafn = "EndDate" />
<FieldRef Nafn = "RecurrenceID" />
<Value type = "datetime">
<Mánuður />
</Gildi>
</DateRangesOverlap>
</Hvar>
<OrderBy><FieldRef Name = "Session_x0020_ID" /></OrderBy>
</Fyrirspurn>

(Ég hef afkóða að &lt;Er og &s GT og skipta þeim út til margar línur fyrir sakir skýrleika í).

Bæta við sem <OrderBy> hluti og nú er tegund af ID Session, ekki innri listi atriði ID.

Risa ábending o’ húfan að Becky Isserman til umsagnar hennar til blogg Isha Sagi í: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. I wouldn’t have put the <OrderBy> á réttum stað án athugasemda hennar.

Ég vona að skrifa þetta upp betur með skot skjár fljótlega, en ef ég geri aldrei, að minnsta kosti ég gerði þetta mikið.

</enda>

SharePoint Aðgerðir & Lausnir Management — Ekki gleyma U í Crud (eða D fyrir þessi efni)

Við eyðum saman mikið í að hugsa um SharePoint lausnir — hvernig á að búa þær, sem tæki til að nota, hvað gerist þegar þeir ekki að dreifa, Teljari störf, mælar, o.fl.. 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, frá huglægu hönnun sjónarhorni, than deploying them. Deployment is basically a cookbook affair. Typically, setja a lögun, kannski hafa a lögun símtól hlaða nokkur gögn í lista, that sort of thing. Hins, retracting er hugsanlega flóknara.

A gefið lausn getur búið artifacts eins og þessir:

  • Content Type
  • Listi Skilgreining
  • Site Definition
  • Gögn í lista
  • Jafnvel móttakara
  • InfoPath eyðublöð

The listi goes á.

Á meðan það er augljóslega mikilvægt að hanna lausn sem instantiates þá artifacts rétt, 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, hvað gerist þegar lausnin er dregin? 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.

Til að hjálpa með þetta, create a matrix that lists each artifact your solution deploys to SharePoint. List three columns per artifact, einn fyrir að búa, uppfæra og eyða. For each case, ákvarða rétta niðurstöðu fyrir þann rekstur.

This sort of analysis is obviously best done before the solution is ever deployed to a SharePoint farm. Hins, eins reykingar, 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, en á minnstur þú munt hafa sett kassa allan vanda.

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter á http://www.twitter.com/pagalvin

Technorati Tags:

Quick Fix: Web Services sem samskipti með SharePoint, InvalidOperationException

Milljón árum, I helped developed a web service that was invoked via a custom action for a SharePoint Designer workflow. Í þessari viku, viðskiptavinurinn vildi færa það til framleiðslu (loksins!) svo við gerðum.

The siðvenja aðgerð uppnámi fínn, en vefur þjónusta er skírskotað ekki, gefa oss þessa villu:

System.InvalidOperationException: Þessi aðgerð er hægt að framkvæma aðeins tölvu sem er tengd við miðlara bænum af notendum sem hafa leyfi í SQL Server til að lesa úr uppsetningu gagnagrunninum. Að tengja þetta miðlara til miðlara bænum, nota SharePoint vörur og tækni stillingarálfur, staðsett á the Byrjun matseðill í Administrative Tools.
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, það í uppnámi fínn.

Þetta MSDN vettvangur staða gaf mér hugmynd sem ég þarf: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter: http://twitter.com/pagalvin

Technorati Tags:

Fljótur og Þægilegur: Fá SPFolder af SPItemList

Ég að halda áfram að keyra inn í þetta vandamál og Google aldrei virðist að skilja hvað ég vil gera, svo ég mynstrağur ég myndi skrifa þetta niður.

Ég hef verið að gera mikið af atburði móttökutæki kembiforrit í síðustu viku eða tvær. The ER is defined against a document library. The individual items in the document library are tightly related to their parent folders. Svo, 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, vinsamlegast eftir athugasemd.

<code>
með System;
með System.Collections.Generic;
með System.Text;
með Microsoft.SharePoint;
með System.Collections;

namespace Conchango
{
    /// <Yfirlit>
 /// </Yfirlit>
 flokki ManualFolderUpdate
    {
        truflanir ógilt Main(band[] args)
        {
            band msh = "ManualFolderUpdate (v1.0): "; // msh = "Message Header"

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

            band url = http://localhost/xyzzy;

            með (SPSite oSPSite =  SPSite(url))
            {

                með (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;
                    band NewStatus = "xyzzy";

                    FolderID = System.Umbreyta.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.");

        } // Main

    } // class foldersync
} // namespace
</code>

</enda>

Gerast áskrifandi að bloggið mitt.

Technorati Tags:

Felur sérsniðnar aðgerðir í SharePoint

Nokkrir mánuðir síðan, meðan að vinna að verkefni fyrir viðskiptavin, I created a feature. Among other things, að lögun skilgreint sérsniðna aðgerð (þessir birtast undir stillingum síðuna). The only purpose for this custom action was to demonstrate to me that the feature activation was working as expected. Grundvallaratriðum, Ég notaði það sem grófur formi kembiforrit.

Mikið að vandræði mín, þetta kembiforrit artifact þess vegur frá dev til UAT og framleiðslu áður en einhver fékk í kring til að spyrja, "what is this xyzzy link?"

Við nú, við erum í framleiðslu og ég virkilega vil ekki að fjarlægja lögun, fix elements.xml and then reinstall.

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

"CustomActions are not copied into the database, þeir eru að lesa beint úr Elements.xml skrá og afrita í ríki umsókn á afturkreistingur. Svo, þú þarft ekki að slökkva á, uninstall, setja, og opnar Lögun til að fjarlægja CustomAction. Bara fjarlægja það úr Elements.xml skrá og endurvinna umsókn laug(s) fram. Í næsta skipti sem lögun er að umfangi, þú munt ekki sjá CustomAction lengur."

Ég fylgdi leiðbeiningum hans og, auðvitað, þeir vinna.

Í mínu tilfelli, 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, Ég trúi að þú þarft að gera breytingar á hverjum.

</enda>

Gerast áskrifandi að bloggið mitt.

Technorati Tags: ,

Quick Fix: Aðgangur SharePoint Site kastar [HttpException (0x80004005): Beiðni rann út.]

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" ótengdum staður varð mjög hægur og oft rann út með þessari villu:

[HttpException (0x80004005): Beiðni rann út.]

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 traustur ?Innihald = 1 kemba tækni, Ég gerði í raun að finna 11 Vefur Varahlutir á síðunni, only two of which were visible. Even better (frá let's-von-I-finna-eitthvað-ljót-hér-að-I-get-festa sjónarhorni), three of those closed web parts had a name of "Error".

Ég eyddi þeim vefur hluta (sem sjálft tók furðu langan tíma) and that solved the problem. For today 🙂

</enda>

Gerast áskrifandi að bloggið mitt.

Technorati Tags:

Skírskota SSRS Web Services Frá WSS / MOSS í FBA Umhverfismál

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: Ekki heimilt
  • Object Færð

The "object moved" message was most interesting because it was saying that the "object" (SSRS þjónustu okkar) had "moved" to login.aspx. This clearly meant we had some kind of authentication problem.

I eventually realized that I had bookmarked a blog entry 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 (og með 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".

Hér er kóðinn sem starfaði fyrir okkur:

ReportingService2006 rs = núll; 
// Authenticate Authentication auth = Authentication(); 
auth.Url = "HTTP://URL/_vti_bin/Authentication.asmx";
auth.CookieContainer =
CookieContainer();
LoginResult result = auth.Login("userid", "password");
ef (result.ErrorCode == LoginErrorCode.NoError) 
{
// No error, so get the cookies.
CookieCollection cookies = auth.CookieContainer.GetCookies(Uri(auth.Url));
Cookie authCookie = cookies[result.CookieName];
rs =
ReportingService2006();
rs.Url =
"HTTP://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs.CookieContainer =
CookieContainer();
rs.CookieContainer.Add(authCookie);
}
reyna
{
  rs.CreateSubscription(report, extSettings, desc, eventType, matchData, parameters1);
}
veiða (Undantekning fyrrverandi)
{
  Console.WriteLine(ex.Message.ToString());
}

I interpret things to work like this:

  • Our web part needs to dial up the authentication service and say, "Hey, Tony, it’s me!".
  • Authentication service replies saying, "Hey, I know you. How are the kids? Here’s a token."
  • We call up the SSRS service and say, "Tony sent me, here’s the token."

</enda>

Gerast áskrifandi að bloggið mitt.

Fljótleg og einföld: Framlag a Web Site Með 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.

Þessi kóði býr til nýja Wiki síðuna:

 SPSite siteCollection;

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

    SPWeb W = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy Title",
        "xyzzy description", 1033, SPWebTemplate.WebTemplateWIKI, ósatt, ósatt);

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

Ef þú leita for "Webs.Add()", þú munt finna fjölda af mjög gagnlegur bloggfærslur, MSDN articles and SDK documentation that go into depth on this subject. I definitely recommend þetta vefsvæði.

</enda>

Gerast áskrifandi að bloggið mitt.

Technorati Tags: