Category Archives: Розвиток SharePoint

Бамбук календар взаємодіють з SharePoint викликає "помилка"

Сьогодні, Я працюю в середовищі, яка використовує бамбук календаря веб-частини для деяких покращена співпраця. Це стандартна середній/малі ферми з двома WFEs навантаження збалансований, "сервер додатків" для індексації та InfoPath і Об'ємний варіант звичайної SQL кінця назад.

Клієнт встановлені деякі аварійного відновлення програмного забезпечення на одному з WFEs і які призвели до сломанной СФФБ конкретного сайту в колекції сайтів. Всякий раз, коли балансування навантаження зазначив, в потерпілі СФФБ і що сайт, користувачі бачили в значній мірі чистий білий екран з вироком "Несподівана помилка". Ніяке інше info показав, тільки що вирок.

Вони попросили мене дивитися на нього. Легко відтворюються проблему а потім додати до ?вміст = 1 до кінця URL-адреси. Це, як я дізнався, що вони використовують веб-частині "Бамбук". Я повернувся до сторінки і зараз, раптом, Він показав мені приємно впорядковане помилку:

image

Я не знаю, що відбувається, або те, що я можу отримати в контрольованих повідомлення про помилку для відображення інших, ніж допісивая до ?вміст = 1 біт рядку запиту.

Ймовірно, це дуже рідкісна краю справу, але якщо ви отримуєте це повідомлення, "Помилка" піти далі і додати ?вміст = 1 до рядку запиту і подивитися, де що призводить.

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Використовуючи відбивача Microsoft.SharePoint.dll

Redgate .NET Reflector Майкл Blumenthal виставила на статті про сповіщення і переглядів ("Які думки можуть бути використані при створенні оповіщення ?"), саме цікаве, по суті. Однак, Я був ще більш цікаво подивитися, як він методично прогулянки через процес використання Redgate готелю веб рефлектор. Крок за кроком, він показує, як використовувати цей інструмент вистежити як SharePoint визначає, чи слід "subscribable погляд на список" за відсутністю кращого слова (he explains this much better than I do 🙂 ).

На даний момент в епоху SharePoint, Ви майже повинні бути глухі та сліпі для не чули або читали про використання цього інструмента. Він висунув речі і мої власні почуття є те, що багато в чому інструмент останньої інстанції. Однак, Якщо ви думаєте, вам це потрібно, але насправді не знаю як, Як великий урок з цього питання здається Майкла письмовий звіт.

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Сортування елементів календаря у поданні «Календар»

Я використовую календар для відстеження дискусії на конкретний день. У мене є дві сесії: вранці та вдень. Я хочу створити подання, яке показує ранкових засіданнях тільки перераховані в алфавітному порядку за допомогою код сеансу. Це трохи складно для виконання (Якщо я пропустив щось реальні очевидно).

Я можу легко створити відфільтроване подання показані тільки той день події. Календар покаже всі ці події, і якщо вони всі зайняти місце на тієї години, Він перераховує їх поруч у годину слот. Це чудово. Tricky частини є те, що, за промовчанням, він хоче, щоб перерахувати їх у форматі ID. Так, Якщо додати "сесії 02" а потім "сесії 01" до календаря, Це показує їх у такому порядку (тобто, Сесія 02 а потім сесії 01). Щоб перерахувати їх у порядку Ідентифікатор сеансу, Я думав, щоб спробувати ці речі:

  1. Настроювання подання за допомогою веб-інтерфейсу користувача. Не щастить. Там не немає опції для сортування елементів таким чином.

    Так як це не спрацювало, Я тепер сподіваючись, що там є CAML запиту десь у там, який дозволить мені змінити сортування. CQWP дозволяє мені зробити що роду змін, може бути також буде календар?

  2. Редагувати веб-частини, Подивіться на експорт"" функція і … BZZZT! Я не можу експортувати його XML. Експортні можливості немає.

    Я все ще простягаючи надію, що я можу знайти і змінити деякі CAML запиту. Оскільки я не можна експортувати веб-частини, Це залишає SharePoint Designer.

  3. Додати веб-частину календар пісочницю сайті і відкриття цього сайту за допомогою SharePoint Designer. Я дивлюся на розмітки для веб-частини, і я вважаю, що я шукаю. Він має закодовані божевілля, але це було: "<ListViewXml …. >кодовані божевілля</ListViewXml>". Зокрема, Існує цей дорогоцінний камінь:

<Запит>
<Де>
<DateRangesOverlap>
<FieldRef назва = "EventDate" />
<FieldRef назва = "Дати завершення" />
<FieldRef назва = "RecurrenceID" />
<Повязані = "Дата й час">
<Місяць />
</Значення>
</DateRangesOverlap>
</Де>
<Порядок сортування><FieldRef назва = "Session_x0020_ID" /></Порядок сортування>
</Запит>

(Я розшифрував на &lt;з та &gt і поділити їх на декілька рядків для ясності).

Додати до <Порядок сортування> біт, і тепер вона сортування за Ідентифікатором сесії, не внутрішнього списку Ідентифікатор елемента.

ГІГАНТСЬКІ Порада o’ капелюх до Беккі Isserman за її коментар в блозі іша сага: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. Я б не покласти на <Порядок сортування> у потрібному місці без її зауваження.

Я сподіваюся, що писати це більш чітко зі знімків екрана скоро, але у випадку, якщо я ніколи не роблять, по крайней мере, я зробив стільки.

</кінець>

Бірки Technorati: , , ,

Засобів SharePoint & Рішення управління — Не забувайте U в CRUD (або D на те пішло)

Ми колективно витратити багато часу, думаючи про SharePoint рішень — як створити їх, який інструмент для використання, що відбувається, коли вони не розгортати, завдання таймера, Приціли, д. Ми витрачаємо стільки часу, думаючи про авансові біти, які легко забути, що ми повинні відмовитися від них як добре. Втягування рішень ускладнюється, ймовірно, з точки зору концептуальний дизайн, ніж розгортати їх. Розгортання в основному cookbook справою. Зазвичай, встановлення функції, може бути, є функція приймач завантажити деякі дані у списку, що такі речі. Однак, втягування є потенційно більш складною.

Заданий може створити артефакти, як ці:

  • Тип вмісту
  • Визначення списку
  • Визначення сайту
  • Дані у списках
  • Навіть приймачі
  • Форм InfoPath

Список можна продовжувати.

Створює екземпляр хоча очевидно важливо розробити вирішення які об'єкту ці артефакти правильно, Це так само важливо розглянути питання про оновлення та видалення випадків. Якщо ваше рішення створює новий список і заповнює цей список з даними, що відбувається, коли рішення забирається? У деяких випадках, повинні бути видалені зі списку. В інших випадках, Він повинен бути залишений без змін з історичних причин. Бізнес-вимог проведе вас правильне рішення.

Щоб допомогти з цим, створити матриці, що містить список кожної артефакт ваш рішення розгортатиметься до SharePoint. Список трьох стовпців у артефакт, один для створення, оновлення та видалення. Для кожного випадку, визначити правильний результат для цієї операції.

Такого роду аналіз Очевидно найкраще робити, перш ніж рішення будь-коли розгорнуто до ферми SharePoint. Однак, як куріння, Це ніколи не занадто пізно, щоб почати робити речі правильно. Створення цієї матриці і розробити план для вирішення відсутні оновлення або видалення сценарії. Це може бути важкою проблемою для вирішення, але принаймні ви повинні покладу рамку навколо проблеми.

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бірки Technorati:

Швидко виправити: Веб-сервіси, що взаємодіють з SharePoint, InvalidOperationException

Мільйон років тому, Я допомагав розвинені веб-сервіс, що викликано через настроювану дію для робочого циклу SharePoint Designer. На цьому тижні, клієнт хотів, щоб перемістити його у виробництво (Нарешті!) тому ми зробили.

Настроювану дію працював штрафу, але веб-служби, він викликається не став, даючи нам цю помилку:

System.InvalidOperationException: Цю операцію можна виконати лише на комп'ютері, які приєдналися до серверної ферми користувачів, які мають дозволи в SQL Server для читання з бази даних конфігурації. Для підключення до серверної ферми цей сервер, Використовуйте майстер настроювання технологій і продуктів SharePoint, розташований в меню «Пуск «в розділ «адміністрування».
на Microsoft.SharePoint.Administration.SPWebApplication.Lookup(Урі 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 здається, ніколи не зрозуміти, що я хочу зробити, тому я вирішив, що я пишу це.

Я роблю багато подій приймач налагодження в останній тиждень або два. ER визначається проти бібліотеки документів. Окремі елементи у бібліотеці документів міцно пов'язані батьківських папок. Так, Я завжди отримую папки елемент для різних Мані. Час усування вад, Мені потрібно оновлювати метадані папка для певного елемента ID я знаю.

Ось трохи консольного застосування (призначений для роботи на сервері ферми) Це вимагає два аргументи: ID елемента і значення, щоб призначити поле, "Стан затвердження". Він жорсткий коди багато речей а не перевірки помилок.

Код виглядає жорстких закодованих ділянку, отримує бібліотеки жорстких закодованих документів і потім знаходить зазначеного елемента. Потім він знаходить батьківську папку, що пункт і призначає значення status.

Ключові урок для мене є, що SPItem не отримати доступ до папки. Ви повинні використовувати SPListItem.File.

Якщо хтось турбує, щоб запропонувати критика або запропонувати кращий спосіб отримати папки елемент, будь ласка, залиште коментар.

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

простір імен Conchango
{
    /// <резюме>
 /// </резюме>
 клас ManualFolderUpdate
    {
        статичні недійсними Головна(рядок[] Args)
        {
            рядок MSH = "ManualFolderUpdate (v 1.0): "; // MSH = "заголовку повідомлення"

 Консолі.WriteLine(MSH + "Запуск.  Я було змінено на 04/08/08.");

            рядок URL-адреса = http://localhost/xyzzy;

            за допомогою (SPSite oSPSite = нові SPSite(URL-адреса))
            {

                за допомогою (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["Документи"];

                    Консолі.WriteLine(MSH + "Отримав бібліотеки документів.");

                    Консолі.WriteLine(MSH + "Doc lib елемент кол: [" + docLib.ItemCount + "].");

                    Int FolderID = 0;
                    рядок NewStatus = "xyzzy";

                    FolderID = системи.Перетворення.ToInt32(Args[0].ToString());
                    Консолі.WriteLine("У пошуках папки для елемента: [" + FolderID + "].");

                    SPListItem Лі = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = Лі.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
} // простір імен
</код>

</кінець>

Підписатися на мій блог.

Приховування настроювані дії в SharePoint

Кілька місяців тому, під час роботи над проектом для клієнта, Я створив це функція. Серед іншого, цю функцію визначено настроювані дії (Ці категорії відображаються у розділі Параметри сайту). Єдина мета для цього настроювану дію було показати мені, що активація функція працює належним чином. В основному, Я використовував його у вигляді сирої налагодження.

Багато чого мого збентеження, цей артефакт налагодження пробилася від dev UAT і виробництва перш ніж хтось отримав навколо просять, "що таке це xyzzy посилання?"

В даний час, Ми знаходимося у виробництві, і я справді не хочете, щоб видалити функцію, виправити elements.xml і переінсталюйте.

Тодд менш похмурих вказав на простий спосіб впоратися з нею. З його слів:

"CustomActions не копіюються до бази даних, вони читати дані безпосередньо з Elements.xml файл і скопіювати в застосунку стану під час виконання. Так, вам не потрібно відключити, видалити, Переінсталюйте, і повторно активувати функцію, щоб видалити той Настроювана дія. Просто видалити його з Elements.xml файлу і переробки пулу застосунків(s) здійснюється. Наступного разу, коли функція за своїми масштабами, Ви не побачите на Настроювана дія більше."

Я стежив за його інструкції та, Звичайно, вони працюють.

У моєму випадку, Це відділення рівня установки з просто одну СФФБ. Якщо ви опинитеся з цієї проблеми в майбутньому і з кількома СФФБ, Я вважаю, ви будете мати, щоб зробити зміни в кожному.

</кінець>

Підписатися на мій блог.

Бірки Technorati: ,

Швидко виправити: Доступ до сайту SharePoint кидає [HttpException (0x-80004005): Запиту вичерпано.]

Один з моїх колег розробник працювала над проектом на цьому тижні і зіткнувся з проблемою тайм-аут під час роботи з будівництва деякі божевільні веб-частини. Його веб-частини було прекрасно, але "раптом" непов'язані сайт став дуже повільно і часто тайм-аут з цієї помилки:

[HttpException (0x-80004005): Запиту вичерпано.]

Я увійти в систему і побачив, що кілька інших сайтів були просто штраф. Я підозрював, що там були деякі приховані веб-частин на сторінці та використання надійний ?вміст = 1 налагодження техніка, Я насправді знайшли, а 11 веб-частини на сторінці, тільки дві з яких були видні. Ще краще (з точки зору let's-hope-I-find-something-ugly-here-that-I-can-fix), Троє з тих частин закритого Інтернеті носило назву "Помилка".

Я видалив ці веб-частини (яка сама взяла диво довго) і що вирішити проблеми. For today 🙂

</кінець>

Підписатися на мій блог.

Бірки Technorati:

Прийняв рішення про задіяння РСР веб-сервісів з WSS / ЛИШАЙНИК в FBA середовищі

Нам необхідно викликати "CreateSubscription" метод на цю тему веб-сервіс, який розміщений на FBA вдалося МОХУ середовищем з користувацьких веб-частини. Ми продовжував отримувати варіації:

  • 401: Відсутня Авторизація
  • Об'єкт переміщений

"Об'єкт переміщений" повідомлення було найцікавіше, що він говорив, що "об'єкта" (наш сервіс РСР) "переїхала" щоб login. aspx. Це явно призначені, у нас була якась проблема автентичності.

Врешті-решт зрозумів, що я мав Bookmarked запис у блозі оглянуто Роберт Garret, який описав посилатися загального призначення WSS/МОСС веб-сервіс, живуть всередині FBA середовищі як. Зверніть увагу, що я не можна зв'язати безпосередньо до статті (Станом на 06/09/08) тому, що він хоче, щоб автентифікувати. Я приведу посилання, ви потрапите на "всі повідомлення" подання і ви можете знайти конкретні статті шляхом пошуку "Accessing ЛИШАЙНИК веб-служб за допомогою основі форм аутентифікації".

Ось код, що працював для нас:

ReportingService2006 rs = Null; 
// Автентифікація Auth аутентифікації = нові Перевірка автентичності(); 
Auth.URL-адреса = "http://URL/_vti_bin/Authentication.asmx";
Auth.CookieContainer =
нові CookieContainer();
LoginResult результат = auth.Логін(«userid», "пароль");
Якщо (результат.Код помилки = = LoginErrorCode.NoError) 
{
// Помилки немає, щоб отримати файли cookie.
CookieCollection печиво = auth.CookieContainer.GetCookies(нові Урі(Auth.URL-адреса));
Cookie authCookie = печиво[результат.CookieName];
RS =
нові ReportingService2006();
RS.URL-адреса =
"http://Server/_vti_bin/ReportServer/ReportService2006.asmx";
RS.CookieContainer =
нові CookieContainer();
RS.CookieContainer.Add(authCookie);
}
Спробуйте
{
  RS.CreateSubscription(звіт, extSettings, DESC, тип події, matchData, parameters1);
}
зловити (Виняток ex)
{
  Console.WriteLine(EX.Message.ToString());
}

Інтерпретувати чим попрацювати, як це:

  • Наш веб-частини повинен (dial up) службу аутентифікації і сказати, "Ей, Тоні, Це я!".
  • Служба автентифікації в Інтернеті відповіді кажучи:, "Ей, Я знаю, що ви. Як є діти? Ось маркер."
  • Ми називаємо цю тему службу і сказати, «Тоні прислав мені, Ось маркера."

</кінець>

Підписатися на мій блог.

Швидкий і простий: Надання веб-сайту за допомогою SharePoint об'єктної моделі у C#

Я спробував, що шукають трохи фрагмент коду, що б показати, наскільки я можу створити новий SPWeb колекції сайтів. Я не знайшов це як швидко або легко, як я очікував, тому я думав, я б ляпас разом мало запис на предмет.

Цей код створює вікі-сайт:

 SPSite колекція _ сайтів;

    колекція _ сайтів = нові SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "назву xyzzy",
        "xyzzy Опис", 1033, SPWebTemplate.WebTemplateWIKI, ХИБНІСТЬ, ХИБНІСТЬ);

Мої початкові результати пошуку не вдалося, оскільки я шукав фрази як "підготувати веб-сайт, використовуючи об'єктну модель sharepoint" і тому подібне.

Якщо ви Пошук для "Webs.Add()", Ви зможете знайти цілий ряд дуже корисно записи в щоденнику, MSDN статей та SDK документації, які входять в глибину на цю тему. Я безумовно рекомендую Цей сайт.

</кінець>

Підписатися на мій блог.

Бірки Technorati: