Архиви на категоријата: SharePoint развој

Бамбус Календар Интеракција со 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

Јас не знам што се случува или она што го направив за да го добиете контролирани порака за грешка за да се прикаже освен дополнувања на ?contents=1 bit of the query string.

Ова е веројатно многу ретки работ случајот, но ако се добие таа порака, "Се случи неочекувана грешка" оди напред и да додадете ?содржината = 1 до барањето и да видиме каде што води.

</крајот>

Да се ​​претплатите на мојот блог.

Следете ме на Twitter во http://www.twitter.com/pagalvin

Technorati Тагови: ,

Користејќи Рефлектор на Microsoft.SharePoint.dll

Redgate .NET Reflector Мајкл Блументал го стави се на една статија за сигнали и пати ("Кој пати може да се користи при создавањето на сигнализација ?"), 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. Сепак, ако мислите дека е потребно, но не навистина знаат како, Мајкл пишувам-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, maybe calendar will as well?

  2. Edit the web part, look for an "export" function and … 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, that leaves 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, but it’s there: "<ListViewXml …. >encoded madness</ListViewXml>". Специјално, има овој скапоцен камен:

<Пребарување>
<Каде>
<DateRangesOverlap>
<FieldRef Name="EventDate"/>
<FieldRef Name="EndDate"/>
<FieldRef Name="RecurrenceID"/>
<Value Type="DateTime">
<Месец />
</Вредност>
</DateRangesOverlap>
</Каде>
<Orderby><FieldRef Name="Session_x0020_ID" /></Orderby>
</Пребарување>

(Сум декодира на &lt;Додади и &GT и им подели надвор на повеќе линии за доброто на јасност на).

Додадете <Orderby> малку и сега видови на сесија проект, не внатрешната елемент во листата проект.

Елена врвот o’ на капа, да се Becky Isserman за нејзиниот коментар на блог пост Иша Sagi е: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. I wouldn’t have put the <Orderby> на право место без неа коментар.

Се надевам дека ќе ја напишам оваа до појасно со екран снимки наскоро, но во случај никогаш не го правам, барем јас го направи ова многу.

</крајот>

Technorati Тагови: , , ,

SharePoint карактеристики & Решенија за управување со — Не заборавајте У во 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 е потенцијално посложени.

А со оглед на решението може да се создаде артефакти како овие:

  • Типот на содржина
  • Листа на Дефиниција
  • Мапа на Дефиниција
  • Податоци во листата
  • Дури и приемници
  • 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, но барем ќе се стави кутија околу проблемот.

</крајот>

Да се ​​претплатите на мојот блог.

Следете ме на Twitter во http://www.twitter.com/pagalvin

Technorati Тагови:

Брз лек: Веб Услуги кои комуницирате со 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 производи и технологии Волшебник за конфигурација, наоѓа на Start менито во административни алатки.
at Microsoft.SharePoint.Administration.SPWebApplication.Lookup(Ури 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

Technorati Тагови:

Брз и лесен: Добие 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, Требаше да се ажурира на метаподатоци на папката за одредена ставка чиј проект знам.

Тука е малку конзола апликација (дизајниран да работи на сервер во фарма) кој ги зема два аргументи: проект на некој предмет и вредност да му ја додели на поле, "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
    {
        статички поништат Главната(низа[] аргументи)
        {
            низа MSH = "ManualFolderUpdate (v1.0): "; // msh = "Message Header"

 Утешуваат.WriteLine(MSH + "Starting up.  Јас последен пат е изменета на 08/04/08.");

            низа url = http://localhost/xyzzy;

            користење на (SPSite oSPSite = нови SPSite(рачно))
            {

                користење на (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 = Систем.Конвертирате.ToInt32(аргументи[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 = аргументи[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
} // именски простор
</код>

</крајот>

Да се ​​претплатите на мојот блог.

Technorati Тагови:

Крие сопствените акции во 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. Основа, Јас го користи како сурова форма на дебагирање.

Многу за да мое срам, овој дебагирање артефакт направи својот пат од dev да UAT и на производството пред некој доби околу да прашуваат, "what is this xyzzy link?"

До сега, ние сме во производството и јас навистина не сакаат да деинсталирање на функција, fix elements.xml and then reinstall.

Тод побезнадежна pointed out an easy way to handle it. In his words:

"CustomActions are not copied into the database, тие се читаат директно од Elements.xml датотека и копирани во примена лидери за време на извршувањето. Така, вие не треба да ги деактивирате, деинсталирате, инсталирај, и реактивирање на Функција за отстранување на CustomAction. Само да го отстраните од Elements.xml датотека и рециклирање на апликација базен(на) врши. Следниот пат кога функцијата е во опсегот, Вие нема да видите на 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, Верувам дека ќе мора да се направи промена во секоја.

</крајот>

Да се ​​претплатите на мојот блог.

Technorati Тагови: ,

Брз лек: Пристап до 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" неповрзани сајт стана многу бавен и често истече со оваа грешка:

[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 debug техника, Јас навистина се најде 11 веб делови на оваа страница, only two of which were visible. Even better (од let's-надеж-I-најде-нешто-грдо-тука-што-јас--може да се поправат перспектива), three of those closed web parts had a name of "Error".

Јас избришани оние веб-делови (кој сам по себе зеде изненадувачки долго време) and that solved the problem. For today 🙂

</крајот>

Да се ​​претплатите на мојот блог.

Technorati Тагови:

Повикувајќи се SSRS Веб Услуги Од WSS / Мос во 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 rs, со грејс = нула; 
// Идентификувате Автентикација наместам = нови Проверка(); 
auth.Url = "HTTP://Рачно / _vti_bin / Authentication.asmx";
auth.CookieContainer =
нови CookieContainer();
LoginResult резултат = auth.Login("userid", "password");
ако (result.ErrorCode == LoginErrorCode.NoError) 
{
// Нема грешка, па се колачиња.
CookieCollection колачиња = auth.CookieContainer.GetCookies(нови Uri(auth.Url));
Колаче authCookie = колачиња[result.CookieName];
rs, со грејс =
нови 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());
}

Јас го протолкува работи кои треба да работат вака:

  • Нашата веб дел треба да dial up за проверка услуга и да каже, "Hey, Tony, тоа е ме!".
  • Проверка услуга одговори велејќи, "Hey, I know you. How are the kids? Here’s a token."
  • Ние го нарекуваме до SSRS услуга и да каже, "Tony sent 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.

Овој код создава нова Вики сајт:

 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()", ќе најдете голем број на многу корисни блог записи, MSDN articles and SDK documentation that go into depth on this subject. I definitely recommend овој сајт.

</крајот>

Да се ​​претплатите на мојот блог.

Technorati Тагови: