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

Одна з причин "один або більше полів типів не інстальовано належним чином”

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

Неочікувана помилка сталася в три дня Outlook WebPart прогноз погоди. Будь ласка, зверніться до адміністратора. Один або кілька типів полів не інстальовано належним чином. Перейдіть на сторінку параметрів списку, видалити ці поля.

Я зіткнулася іншої прихованої проблеми раніше так не відразу поєднати мій CAML запиту з помилкою, який був звітний SharePoint, для мене.  Я зробив швидкий пошук bing і і знайшли цей пост корисним блог на Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Ось це погані запиту:

запит.Запит ="<Де><І><Neq><FieldRef ім'я = 'Скор' /><Значення типу = "Текст">SFNY</Значення><FieldRef ім'я = 'Скор' /><Значення типу = "Текст">SFIS</Значення></Neq></І></Де>";

Тут він стаціонарного типу:

запит.Запит ="<Де><І><Neq><FieldRef ім'я = 'Скор' /><Значення типу = "Текст">SFNY</Значення></Neq><Neq><FieldRef ім'я = 'Скор' /><Значення типу = "Текст">SFIS</Значення></Neq></І></Де>";

Так, мораль цієї історії є: Переконайтеся, що ваш CAML є правильним, або ви можете отримати помилку дивак.

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

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

</кінець>

SharePoint 2010 Рішення, які застрягли в "розгортання” Статус

Я використав PowerShell, щоб розгорнути рішення на фермі SharePoint (h/t:  Корі рот і його повідомлення в блозі). 

Потім я вирушив до центру адміністрування, Доступні системні параметри а потім «Керування ферми рішення» розгорнути його на ферму і до мого (невелике) розчарування, він застряг в "розгортання".

Я бачив це питання придумати багато разів на форумах MSDN, так що я був дуже нервовий про це.  Я шукав навколо небагато і Знайдено це корисні статті (здавалося б додаток особою з http://www.resolutionsnet.co.uk/).  Я скасував завдання розгортання, і коли я натиснув на рішення, Він сказав мені, що він успішно розгорнуті рішення до трьох з чотирьох серверів у фермі.

Я пішов до мандрівний сервера, Служба таймера та її перезапуску.  Windows server насправді сказав мені, що послуга не реагувати на команди, так що це говорить мені, що він був хворий.

Цього разу, Коли я повернувся до центру адміністрування, Я був в змозі їх застосовуватимемо без проблем.

Сподіваюся, це трохи інформації допоможе деякі в складному становищі один із днів.

</кінець>

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

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

Помилка під час дня: "Не можна додати вказаний Асамблеї в гак”

Я вже бореться небагато з visual studio 2010 на це рішення про sp2010 і отримати цю помилку:

Сталася помилка під час розгортання кроці додати рішення: Помилка: Не вдається додати вказаний Асамблеї до глобальної Асамблеї кеш: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Я пішов до гак, сам (c:\windowsassembly) щоб спробувати видалити і отримав помилку "файл використовується".

Я зробив на iisreset, Я завантажив майже SysInternals, Я зупинився послуг..., служба часу нарешті, Я просто закривається або повторно відкривається visual studio, сама, і я нарешті вдалося закрити його.

</кінець>

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

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

Швидкий і простий: Налагодження С. 2010 Рішення розгортання

Приєднуйтесь до нас 2010 звіти для налагодження помилок під час розгортання кілька разів.  Швидкий і простий спосіб зробити деякі дуже грубо налагодження є кинути ваш власний іменованого винятки.  Visual Studio позначено в консолі виводу.

Розглянемо цей шматочок коду:

image

Якщо ця функція призначений для веб-додатків, сайт буде мати значення null.  Якщо ви спробуєте посилаються на властивість сайту, Ви отримаєте Невизначена помилка:

Сталася помилка під час розгортання кроці додати рішення: Об'єкта не задана екземпляр об'єкта посилання.

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

image

Це техніка, сирої, але досить швидко і легко.

</кінець>

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

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

Таймер роботу FeatureActivated та сферу функція

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

Я використовую Visual Studio 2010 і розгортання зберігається в іншому випадку з помилкою "Сталася помилка під час розгортання кроці"Додати рішення": Об'єкта не задана посилання на екземпляр об'єкта."

Я приймав його код занадто буквально.  Я була області видимості функції на рівні веб-застосунку, як показано:

image

У результаті, властивості, які надсилаються до ресивера є від веб-додатків, не колекції сайтів.  Врешті-решт, код має такий вигляд::

громадськість перевизначити порожнеча FeatureActivated(Властивості SPFeatureReceiverProperties)
{

    // Не виконувати такі дії з можливостями web app в межах, Це призводить до розпачу посмішка
    // SPSite сайту = властивості.Feature.Parent як SPSite;

    SPWebApplication ва = властивості.Feature.Parent як SPWebApplication;

    Якщо (WA = = null) кинути нових виняток("webapp2 не визначено".);

    foreach (SPJobDefinition роботу в wa.JobDefinitions)
    {

        Спробуйте
        {
            Якщо (роботу.Ім'я = = List_JOB_NAME)

                роботу.Видалити();
        }
        зловити (Виняток e)
        {
            кинути нових виняток("маркер 2");
        } // зловити винятком e
    }

    // встановити роботу

    WeatherForecastTimerJob weatherForecastTimerJob =
        нові WeatherForecastTimerJob(List_JOB_NAME, WA);

    Розклад SPMinuteSchedule = новий SPMinuteSchedule();
    розклад.BeginSecond = 0;
    розклад.EndSecond = 59;
    розклад.Інтервал = 5;
    weatherForecastTimerJob.Schedule = розклад;
    weatherForecastTimerJob.Update();

}

Ключ винос в тому, що коли функцію із областю на веб-додаток, SPFeatureReceiverProperties, що SharePoint проходить в ресівер функція має web app рівня параметрів.  Старий блог на вступ Андрія припускає, що він призначений для колекції сайтів.

</кінець>

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

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

Де — Microsoft.SharePoint.ApplicationPages.Administration.dll?

Я передав проекту visual studio, що посилається на Microsoft.SharePoint.ApplicationPages.Administration.dll.  Це взяв мене трохи, а знайти його і я думав, я хотів би поділитися.  У моїй середовищі, Він розташований в:

c:\Програма filescommon filesmicrosoft sharedweb сервер extensions14configadminbin

</кінець>

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

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

CodePlex проект – SP2010 Explorer

У рамках поточної зусилля, щоб дізнатися технічні деталі низького рівня SharePoint 2010, Я створив на "SharePoint Explorer"на зразок інструмент.  Ідея не нова.  Я використав цей проект лише один раз: http://sharepointexplorer.codeplex.com/.  Моя ідея полягає в тому, щоб створити версію SharePoint, що використовує підключення веб-частин для відображення всіх низького рівня деталізації об'єктної моделі можуть надати. 

Це повідомлення в блозі служить обидва оголошення проекту, а також виклик для волонтерів.  Якщо ви зацікавлені в роботі над цим проектом, Дозвольте мені по електронній пошті (Galvin.Paul@Gmail.com) і ми будемо працювати з нею.

Ось проекту: http://sp2010explorer.codeplex.com/

</кінець>

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

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

Робота З TreeNodeBinding в ASP.NET Treeview контроль

Я працюю на те, що я сподіваюся, буде на незабаром випустили CodePlex проект, який забезпечує вдале інтегрованих веб-частин говорити один з одним за допомогою постачальника/побутова з'єднань з метою вивчення сайту SharePoint під ковдрою.  (Це безумовно було зроблено перед, але це проект навчання, як все інше).  Це означало для заміни для подання провідника windows з SharePoint 2010 бібліотеки документів.

Код має звичайний рекурсивний називають вниз до SPWeb і SPLists від даного відправна точка.  Об'єкт, який робить все, що перетинаючи накопичується XML рядок, який виглядає приблизно так:

<колекція _ сайтів url =’http://demo2010a:9090′>
 
<Web
     заголовок = "Hello World пісочниці" 
     Шаблон =' сайт для команди, щоб швидко впорядкувати, Автор, і поділитися інформацією, БЛА БЛА БЛА '>

     <Список
        заголовок ='BCC_Health_Services_FAQs’
        Шаблон ='CustomList’
       
ідентифікатор списку =’http://demo2010a:9090/helloworldsandbox[Делім]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</Список>

     <Список
        заголовок = 'BCC_Notifications' 
        Шаблон = 'CustomList' 
        ідентифікатор списку =’
http://demo2010a:9090/helloworldsandbox[Делім]5a5a13d1 - 877-c - 41c-0-9063-b9612be80d5e’>
     </Список>

  </Web>

</колекція _ сайтів>

Я очікую очистити, що XML, перш ніж все сказано і зроблено.

Я хочу, щоб в кінцевому підсумку отримати цю інформацію вгору і в Treeview контролю.  Не зовсім Земля нищівного речі.

Завдання, я взяв тут було з'єднуватися на ієрархічній панелі елемента керування джерела даних XML, замість того, щоб вручну нарощування мій treenodes, як я Траверс дерево.  Я зробив це, почасти тому, що я навмисно роблю речі важче на себе (Це навчання проект врешті-решт) і почасти тому, що я маю цьому розпливчасто поняття, що нарощування дерево вузлів, як я Траверс дерево не є гарною ідеєю у довгостроковій перспективі.

Проблема з цим підходом полягає в тому, що Treeview контролю не знають про атрибути хороший на цікавих вузлів, як "список" або "мережі", так що він показує цьому виводі за промовчанням:

 

image

Це не корисно.  Це де допомагає TreeNodeBinding класу.  Я можу використовувати це розповісти Treeview контролю, як це слід інтерпретувати XML.  Нижче наведено приклад:

tnb = новий TreeNodeBinding();
tnb.DataMember = "список"; // Це етикетці у форматі xml для сайту.
tnb.TargetField = "ідентифікатор списку";
tnb.ValueField = "Назва";
tnb.ToolTipField = "Шаблон";

Цей зв'язок говорить в treeview, що коли він знаходить в <Список> вузол в XML-ФАЙЛІ, застосувати прив'язки для TargetField, ValueField і ToolTipField.  У травні app, Ці карти наступним чином:

  • TargetField: Коли користувач натискає на вузол значення, Це те, що ви отримаєте за SelectedNode.Value.  Це не слід плутати з...
  • ValueField: Це те, що ви хочете Treeview для відображення користувачу.
  • ToolTipField: Значення з XML, який ви хочете, як спливаюча підказка.

Додати, що TreeNodebinding на ієрархічній панелі DataBindings і ви отримаєте виводу наступним чином:

 

image

Я буду мати більше на все це, як я продовжити проект і в кінцевому підсумку покласти це на Codeplex.

</кінець>

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

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

Підключення текстові поля фільтри до свій власний веб-частини

Я хотів би отримувати інформацію від текстового поля фільтра в SharePoint 2010 в мій власний веб-частини.  Я спробував за допомогою Ця стаття MSDN за основу, але статті або порушується або я просто не після це правильно.

Трохи більше пошуку виявився Майк Сміт MSDN внесок Тут (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Існує багато матеріалу там з можливістю підключення до веб-частини, але стаття Майка так само просто, як він отримує.

</кінець>

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

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

Швидкий і простий: Відправити пошту, використовуючи SMTP-сервер Gmail в .NET, C#

Це не зовсім нова тема, але коли мені потрібно Зроби, Я знайшов багато "Чому не буде ця робота для мене" і не занадто багато прямі відповіді. Я сподіваюся, що хтось вважає, що це корисна.

Наступні розрядний код надішлемо вам електронне повідомлення, використовуючи мій власний обліковий запис gmail це зробити, разом із вкладеннями:

за допомогою System.Net.Mail;
за допомогою System.Net;

NetworkCredential loginInfo = нові NetworkCredential("[Мій ID Gmail]", "[Мій пароль Gmail]");
MailMessage MSG = нові MailMessage();
MSG.З = нові MailAddress("[M Gmail Id]@gmail.com");
MSG.To.Add(нові MailAddress("paul.galvin@arcovis.com"));
MSG.Тема = "Тест infopath dev тема";
MSG.Тіло = "<HTML><тіло><сильні>Потужний сигнал.</сильні></тіло></HTML>";
MSG.IsBodyHtml = Істина;

foreach (рядок aFile у NIPFD.GetAttachmentNamesAndLocations())
{
    MSG.Attachments.Add(нові Вкладення(aFile));
} // Додавання вкладень.

SmtpClient клієнт = нові SmtpClient("smtp.gmail.com");
клієнт.EnableSsl = Істина;
клієнт.UseDefaultCredentials = ХИБНІСТЬ;
клієнт.Облікові дані = loginInfo;
клієнт.Порт = 587;
клієнт.EnableSsl = Істина;
клієнт.Надіслати(MSG);

Кілька ключових біти, які сповільнилися мене та інших спостережень / Нотатки:

  • Перший рядок, яка створює loginInfo об'єкта необхідно використовувати gmail, позбавлений ID "@gmail.com”. Так, Якщо мою адресу електронної пошти gmail "sharepoint@gmail.com"а мій пароль"xyzzy"потім лінія буде виглядати:

NetworkCredential loginInfo = нові NetworkCredential("sharepoint", "xyzzy");

  • Мій обліковий запис gmail настроєно на використання SSL і що це не проблема.
  • Є деякі суперечливу інформацію там про те, який порт використовувати. Я використав порт 587 і він працював штрафу для мене.
  • У моєму випадку, Мені також потрібно надіслати вкладення. Що NIPFD об'єкт має метод, який знає, де мої вкладення. Він повертається повністю шлях (Наприклад. "c:\tempattachment1.jpg". У моєму тест, У мене було два вкладеннями і вони обидва працював штрафу.

Я використав Приєднуйтесь до нас 2008 щоб написати цей код.

</кінець>

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

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

Бірки Technorati: ,,,