Категория Архиви: Развитие на SharePoint

Бамбук календар взаимодействие с SharePoint причинява "неочаквана грешка"

Днес, Съм бил на работа в среда, която използва Бамбукови календар на уеб част за някои подобрено сътрудничество. Това стандартен среден/малък ферма с две балансиран WFEs, "приложение сървър" за индексиране и InfoPath и клъстерирани SQL обратно край.

Клиента инсталирани някои бедствие възстановяване софтуер върху един от WFEs и това доведе до счупени WFE за определен сайт в колекцията от сайтове. Когато балансиране на натоварването посочи в засегнатите WFE и този сайт, Потребителите видях до голяма степен празен бял екран с изречението "неочаквана грешка". Няма друга информация показа, само това изречение.

Те ме помоли да го погледнете. Лесно възпроизведени проблема и след това добавя ?съдържание = 1 в края на URL адреса. Това е как научих, че те използват уеб компонента на бамбук. Аз се върнах към страницата и сега, изведнъж, Той ми показа хубаво подреден грешка съобщение:

image

Аз не знам какво се случва или това, което направих да получите съобщение за различни от добавяне на контролирано грешка ?съдържание = 1 бит на низа на заявката.

Това вероятно е много рядко ръб случай но ако получите това съобщение, "Неочаквана грешка" давай напред и да добавите ?съдържание = 1 за низа на заявката и видя накъде води.

</край>

Абонирайте се за моя блог.

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

Използване на отражателя на Microsoft.SharePoint.dll

Redgate .NET Reflector Майкъл Блументал има поставени статия за сигнали и мнения ("Кои изгледи могат да бъдат използвани при създаване на предупреждение ?"), което е интересно за собствените си заслуги. Въпреки това, Аз бях още по-заинтересовани да видите как той методично е пречупен през процеса на използване на плажа Redgate .NET рефлектор. Стъпка по стъпка, Той показва как да използвате този инструмент за да проследят как SharePoint определя дали изглед на списък трябва да бъде "subscribable" поради липса на по-добра дума (he explains this much better than I do 🙂 ).

В този момент в ерата на SharePoint, почти трябва да бъде глух и сляп да не са чували или чели за използването на този инструмент. То е Разширено неща и моя собствен усещане е, че е в много отношения инструмент от последна инстанция. Въпреки това, Ако мислите, че ви потрябва, но наистина не знам как, На Майкъл хвалебствена изглежда като голям настойнически по този въпрос.

</край>

Абонирайте се за моя блог.

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

Сортиране на елементи от календара в изгледа на календара

Аз съм с помощта на календар за проследяване на панелните дискусии на даден ден. Аз имам две сесии: сутрин и следобед. Искам да създадете изглед, който показва сутрин сесии само изброени по азбучен ред чрез сесиен Идентификатор. Това е малко труден за изпълнение (Освен ако съм пропуснал нещо реално очевидно).

Лесно да създадете филтриран изглед показва само този ден събития. Календарът ще покаже всички тези събития и ако всички се извършват на един и същи час, Той изброява ги отстрани в час слот. Това е чудесно. Сложната част е, че, по подразбиране, тя иска да ги изброява в формат на ИД. Така, Ако добавим "сесия 02" и тогава "сесия 01" в календара, Той ги показва в този ред (т.е., Сесия 02 и след това сесия 01). Да ги изброява в ред сесиен Идентификатор, Мислех да пробвам тези неща:

  1. Конфигурирайте изгледа използвате потребителския интерфейс на уеб. Без късмет. Съществуват възможности за да сортирате елементите по този начин.

    Тъй като това не е работа, Аз съм сега надеждата е CAML заявка някъде в там, че ще ми позволи да замени сортиране. CQWP ми се, че такива промени позволява да, може би календар ще както и?

  2. Редактиране на уеб част, погледнете за "износ" функция и … BZZZT! Може да експортирате своите XML. Няма износ опция.

    Аз съм все още въплътила надеждата, че мога да намеря и модифицирате някои CAML заявка. Тъй като не може да експортирате уеб компонент, Това оставя SharePoint Designer.

  3. Добавяне на календар на уеб част към пясък сайт и отворен този сайт с помощта на SharePoint Designer. Аз гледам на коректурата за уеб компонента и намирам, че това, което аз търся. Той е кодирал лудост, но това е там: "<ListViewXml …. >кодиран лудост</ListViewXml>". Специално, има тази скъпоценност:

<Заявка>
<Където>
<DateRangesOverlap>
<FieldRef име = "EventDate" />
<FieldRef име = "Крайна дата" />
<FieldRef име = "RecurrenceID" />
<Стойност тип = "DateTime">
<Месец />
</Стойност>
</DateRangesOverlap>
</Където>
<OrderBy><FieldRef име = "Session_x0020_ID" /></OrderBy>
</Заявка>

(Аз съм декодирани &lt;на и &gt на и цепя се тях вън към няколко линии за яснота на саке).

Добави <OrderBy> малко и сега сортира по сесиен Идентификатор, не вътрешния списък ИД на елемент.

ГИГАНТСКИ съвет о’ шапка за Беки Isserman за нея коментар на Isha Даниел блог пост: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. Аз не биха поставили <OrderBy> на правилното място без нея коментар.

Надявам се да пиша това по-ясно с екранни снимки скоро, но в случай, никога не правя, поне направих това много.

</край>

Функции на SharePoint & Управление на решения — Не забравяйте U в CRUD (или D за този въпрос)

Ние заедно прекарват много време да мисля за SharePoint решения — Как да ги създаде, Кой инструмент да се използва, Какво се случва, когато те не успяват да се разположи, задания за таймер, обхвати, н. Ние прекарваме толкова много време да мисля за първоначални бита, че е лесно да се забрави, че ние трябва да ги отстраните както и. Пренавиване решения е вероятно по-трудно, от гледна точка на идеен проект, от разполагането им. Разполагане е основно cookbook афера. Обикновено, инсталиране на функция, може би имат функция приемник зареди някои данни в списък, този вид на нещо. Въпреки това, Пренавиване е потенциално по-сложни.

Дадено решение може да създаде артефакти като тези:

  • Тип съдържание
  • Списък определение
  • Дефиниция на сайт
  • Данните в списък
  • Дори приемници
  • Формулярите на InfoPath

Списъкът продължава.

Въпреки че е очевидно важно да проектирате решение което instantiates тези артефакти правилно, Тя е също толкова важно да се помисли за актуализиране и изтриване на случаи. Ако вашето решение създава нов списък и населяват този списък с данни, Какво се случва, когато решението е прибран? В някои случаи, Списъкът трябва да бъде изтрит. В други случаи, Тя трябва да се оставят непокътнати за историческа цел. Вашите изисквания за бизнес ще ви насочи към правилното решение.

Да помогне с това, създаване на една матрица, която изброява всеки артефакт, вашето решение разполагането на SharePoint. Избройте три колони на артефакт, една за създаване, актуализиране и изтриване. За всеки случай, определи правилния резултат за тази операция.

Този вид анализ е очевидно най-добре преди решението винаги е разположено на сървърна група на SharePoint. Въпреки това, като пушене, Тя никога не е късно да започнете да правите нещата правилно. Създаване на тази матрица и да разработи план за справяне с липсващите сценарии за актуализиране/изтриване. Тя може да бъде труден проблем за решаване, но поне ще се сложи поле около проблема.

</край>

Абонирайте се за моя блог.

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

Technorati тагове:

Да намери бързо решение: Уеб услуги които взаимодействат с SharePoint, InvalidOperationException

Преди милион години, Съм помогнал разработен уеб услуга, която е изразена чрез потребителско действие за SharePoint Designer поток. Тази седмица, клиента искаше да го преместите в производството (най-накрая!) Затова направихме.

Потребителско действие работи добре, но уеб услуга, това позоваване не, ни дава тази грешка:

System.InvalidOperationException: Тази операция може да се извърши само на компютър, който е присъединен към сървърна група от потребители, които имат разрешения в SQL Server да се чете от конфигурационната база данни. Да свържете този сървър към сървърната група, Използвайте съветника за конфигуриране на технологии и продукти на SharePoint, в Старт менюто в административни инструменти.
в Microsoft.SharePoint.Administration.SPWebApplication.Lookup(URI requestUri)

Оказва се, че забравих да добавите услугата на SharePoint набора приложения в IIS. След като направих това, мина успешно.

MSDN форум стълб ми даде представа, че е необходимо: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</край>

Абонирайте се за моя блог.

Следвайте ме на нервна възбуда: http://twitter.com/pagalvin

Technorati тагове:

Бърз и лесен: Вземи папка SPFolder на SPItemList

Продължавам да бягам в този проблем и Google никога не изглежда да се разбере това, което искам да направя, така че си помислих, аз ще пиша това.

Съм правил много събитие получател, отстраняване на грешки в последната седмица или две. Реанимацията се дефинира срещу библиотека с документи. Отделните елементи в библиотеката с документи са плътно свързани с техните родителски папки. Така, Аз винаги съм се в папка на елемента за различни манипулации. Докато грешки, Трябваше да актуализира метаданните на папка за конкретен артикул чийто ИД, знам.

Ето малко конзола заявление (проектиран да работи на сървър в групата) Това отнема два аргумента: ИД на елемент и стойност, за да присвоите на поле, "Състояние на одобрение". Той трудно кодове на много неща и няма проверка за грешки.

Кодът изглежда твърди кодирани сайт, получава библиотека с твърди кодирани документи и след това намира посоченият елемент. След това установи родителската папка на този елемент и присвоява стойността на състоянието.

Основните урок тук за мен е, че SPItem не получите достъп до папката. Вие трябва да използвате SPListItem.File.

Ако някой му пука да предложат критика или да предложи по-добър начин да получите в папката на елемент, Моля, оставете коментар.

<код>
използване на Система;
използване на System.Collections.Generic;
използване на System.Text;
използване на Microsoft.SharePoint;
използване на System.Collections;

пространство на имената Conchango
{
    /// <Резюме>
 /// </Резюме>
 клас ManualFolderUpdate
    {
        статични невалидни Основни(низ[] ARGS)
        {
            низ MSH = "ManualFolderUpdate (v1.0): "; // MSH = "съобщенията заглавка"

 Конзола.WriteLine(MSH + "Започване на.  Последно променен на 08/04/08.");

            низ URL = http://localhost/xyzzy;

            използване на (SPSite oSPSite = нов SPSite(URL адрес))
            {

                използване на (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    Splist.Update() docLib = oSPWeb.Lists["Документи"];

                    Конзола.WriteLine(MSH + "Имам на библиотеката с документи.");

                    Конзола.WriteLine(MSH + "Брой doc lib елементи: [" + docLib.ItemCount + "].");

                    INT ИД на папка = 0;
                    низ NewStatus = "xyzzy";

                    ИД на папка = система.Конвертиране.ToInt32(ARGS[0].ToString());
                    Конзола.WriteLine("Търсенето на папка за артикули: [" + ИД на папка + "].");

                    SPListItem Li = docLib.GetItemById(ИД на папка);

                    Папка SPFolder thisItemFolder = li.File.ParentFolder;

                    Конзола.WriteLine(MSH + "Имам на родителската папка.");

                    NewStatus = args[1].ToString();
                    Конзола.WriteLine("Установяване състояние [" + NewStatus + "].");

                    Конзола.WriteLine("Натиснете връщане към извършване на актуализация или CTRL-C да се откажем.");

                    Конзола.ReadLine();

                    thisItemFolder.Item["Състояние на одобрение"] = NewStatus;
                    thisItemFolder.Item.Update();

                    Конзола.WriteLine(MSH + "Завърших актуализиране на папка.  Излизане.");

                } // използване на SPWeb

            } // използване на SPSite

 Конзола.WriteLine(MSH + "Завърши.");

        } // Основни

    } // клас foldersync
} // пространство на имената
</код>

</край>

Абонирайте се за моя блог.

Technorati тагове:

Скриване на потребителски действия в SharePoint

Преди няколко месеца, докато работи по проект за клиент, Съм създал функция. Наред с други неща, тази функция определя действие по избор (те се появяват в настройки на сайта). Единствената цел за това потребителско действие е да се покаже на мен, че активирането на функцията работи както се очаква. По принцип, Аз го използва като груба форма на отстраняване на грешки.

Много за моя срам, отстраняване на грешки този артефакт си проправи път от dev за доставки UAT и за производство преди някой трябва да се пита, "какво е това xyzzy връзка?"

До сега, Ние сме в производство и аз наистина не искам да деинсталирате функция, Прикрепвам elements.xml и преинсталирайте.

Тод мрачна посочи един лесен начин да се справя. По думите му:

"CustomActions не се копират в базата данни, те са четене директно от Elements.xml файла и копирани в прилагането състояние по време на изпълнение. Така, не е нужно да дезактивирате, деинсталиране, Преинсталирайте, и повторно активиране на функция, за да премахнете CustomAction. Просто го премахнете от файла Elements.xml и рециклиране на набора приложения(s) извършва. Следващия път, когато функцията е с обхват, Вие няма да видите CustomAction вече."

Следях си инструкции и, Разбира се, те работят.

В моя случай, Това е департамент ниво инсталация с прав единствен WFE. Ако откриете себе си с този проблем в бъдеще и с множество WFE, Вярвам, че ще трябва да направите промяната във всяка.

</край>

Абонирайте се за моя блог.

Да намери бързо решение: Достъп до SharePoint сайта хвърля [HttpException (0x 80004005): Заявката е изтекло.]

Един от колегите ми разработчик работи върху проект тази седмица и се блъсна в изчакване проблем докато работи върху изграждането на някои луди уеб част. Неговата уеб частта е глоба, но "изведнъж" несвързани сайт става много бавно и често изтече с тази грешка:

[HttpException (0x 80004005): Заявката е изтекло.]

Влязъл и видял, че няколко други сайтове са само глоба. Подозирах, че има някои скрити уеб части на страницата и използване надежден ?съдържание = 1 debug техника, Всъщност намирам 11 уеб части на страницата, само две от които са били видими. Дори по-добре (от гледна точка на let's-hope-I-find-something-ugly-here-that-I-can-fix), три от тези затворени уеб части е име на "Грешка".

Аз изтривам тези уеб части (която от своя страна се изненадващо дълго време) и че решават проблема. For today 🙂

</край>

Абонирайте се за моя блог.

Позовават SSRS уеб услуги от ВиК / Мос в FBA среда

Имахме нужда да се позове на "CreateSubscription" метод на SSRS уеб услуга, която се хоства в FBA управлявани Мос среда от потребителски уеб част. Ние държат получаване вариации на:

  • 401: Не са разрешени
  • Обектът се премества

"Обект се премества" съобщението е най-интересно, защото тя казваше, че "обект" (нашата SSRS услуга) "карало" за да login.aspx. Това ясно предназначени имахме някакъв удостоверяване проблем.

В крайна сметка разбрах, че имах отметки на блог запис от Робърт Гарет, който описва как да се позове общо предназначение WSS/Мос уеб услуга, живеещи вътре FBA среда. Обърнете внимание, че не може да свърже директно към статията (като от 06/09/08) защото той иска да удостоверяване. Предоставям връзката ви отвежда до "всички мнения" Изглед и можете да откриете определена статия чрез търсене на "Достъп до Мос уеб услуги с помощта на удостоверяване на базата на формуляри".

Тук е кодът, който работи за нас:

ReportingService2006 rs = Null; 
// Удостоверяване Auth удостоверяване = нов Удостоверяване(); 
органи.URL = "HTTP://URL/_vti_bin/Authentication.asmx";
органи.CookieContainer =
нов CookieContainer();
Резултат LoginResult = органи.Вход("userid", "парола");
Ако (резултат.Код на грешка == LoginErrorCode.NoError) 
{
// Няма грешка, така че да получите бисквитките.
CookieCollection бисквитки = органи.CookieContainer.GetCookies(нов URI(органи.URL адрес));
Бисквитка authCookie = бисквитки[резултат.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);
}
улова (Изключение ex)
{
  Console.WriteLine(ех.Message.ToString());
}

Аз тълкувам нещата да работи като този:

  • Нашите уеб част трябва да набере услугата за удостоверяване и кажа, "Ей, Тони, това съм аз!".
  • Услугата за удостоверяване отговори казвайки, "Ей, Знам, че ви. Как са децата? Тук е маркер."
  • Ние наричаме на СРИС обслужване и кажа, "Тони ми изпрати, тук е маркер."

</край>

Абонирайте се за моя блог.

Бърз и прост: Предоставяне на уеб сайт с помощта на SharePoint обектния модел в C#

Аз tried търся за малко фрагмент код, който показва как да създадете нов SPWeb в колекция от сайтове. Не го намери като бързо или лесно, както и очаквах, така си мислех, че ще шамар заедно малко запис по темата.

Този код се създава нов сайт уики:

 SPSite siteCollection;

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

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy заглавие",
        "xyzzy описание", 1033, SPWebTemplate.WebTemplateWIKI, фалшиви, фалшиви);

Моята първоначална търсения е неуспешно, защото е търсил за фрази като: "предоставяне на уеб сайт с помощта на модел на обекта на sharepoint" и други подобни.

Ако ви Търсене за "Webs.Add()", Вие ще намерите много полезни блог записи, MSDN статии и SDK документация, които отиват в дълбочина на тази тема. Определено препоръчвам този сайт.

</край>

Абонирайте се за моя блог.

Technorati тагове: