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

Една от причините за "един или повече поле типове не са инсталирани правилно”

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

Възникнала е неочаквана грешка в трите WebPart за прогноза за времето на ден в Outlook. Обърнете се към системния администратор. Един или повече типове на полета, не са инсталирани правилно. Отидете на страницата за настройки на списъка, за да изтриете тези полета.

Аз е пред друг Одбол въпрос по-рано, така че незабавно не свързвам моя CAML заявка с грешката, която е SharePoint е докладване за мен.  Направих бързо търсене Бинг и и намери този полезни блог съобщение от Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Тук е лоша заявка:

заявка.Заявка ="<Където><И><Neq><Име на FieldRef = 'Abbr' /><Стойност на тип = "Текст">SFNY</Стойност><Име на FieldRef = 'Abbr' /><Стойност на тип = "Текст">SFIS</Стойност></Neq></И></Където>";

Тук е фиксиран:

заявка.Заявка ="<Където><И><Neq><Име на FieldRef = 'Abbr' /><Стойност на тип = "Текст">SFNY</Стойност></Neq><Neq><Име на FieldRef = 'Abbr' /><Стойност на тип = "Текст">SFIS</Стойност></Neq></И></Където>";

Така, морала на историята е: Уверете се, че вашият CAML е правилен или може да получите грешка Одбол.

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

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

</край>

SharePoint 2010 Разтвор, остана в "разполагане” Статус

Аз използва PowerShell за разполагане на решение на сървърна група на SharePoint (h/t:  Кори Рот и му блог пост). 

След това отидох на централния администратор, достъп до системните настройки и след това "Управление ферма решения" да го разположи до фермата и до моето (леко) ужас, то остана ли в "разгръщане".

Аз съм виждал този въпрос излезе много пъти на форумите на MSDN, така че аз бях доста нервен за това.  Търсих около малко и Намерих тази полезна статия (от пръв поглед unattributed лице от http://www.resolutionsnet.co.uk/).  Аз анулиране заданието за разполагане на и когато се кликне в разтвора, Тя ми каза, че тя е успешно разгърнати решението на три от четирите сървъри в групата.

Отидох да греши сървър, спря услугата на таймера и го рестартира.  Windows сървър всъщност ми каза, че услугата не успя да реагира на командата, така че ми казва, че той е болен.

Този път, Когато се върнах към централния администратор, Аз бях в състояние да го разположи без проблем.

Надявам се това малко на информация ще помогне на някои в капан един от дните.

</край>

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

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

Грешка на деня: "Не може да добави указаната в GAC”

Аз съм се борят малко с visual studio 2010 на sp2010 разтвор и е getting този грешка:

Възникна грешка в разполагане стъпка "Добави решение": Грешка: Може да добавяте Зададеният блок с код в глобалния кеш на сборовете: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Отидох в GAC, самата (c:\windowsassembly) да се опитаме и премахване и имам грешка "пила in употреба".

Направих iisreset, Свалих почти Sysinternals, Спрях услугата на таймера в услуги... накрая, Аз просто затворени и отново visual studio, себе си и накрая бях в състояние да го затворите.

</край>

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

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

Бърз и лесен: СРЕЩУ за отстраняване на грешки 2010 Разполагане на решение

Visual Studio 2010 доклади трудно да развенчавам грешка по време на разполагане на няколко пъти.  Бърз и лесен начин да направите някои много груби грешки е да се хвърлят собствените си име изключения.  Visual Studio ще ги покаже в конзолата продукция.

Помислете за това малко код:

image

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

Възникна грешка в разполагане стъпка "Добави решение": Обект номер не настроен на една инстанция на обект.

Въпреки това, Ако хвърли ново изключение и предаде низ строител, ще получите съобщение, малко по-полезни:

image

Това е техника, суров, но доста бързо и лесно.

</край>

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

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

Таймер за работа FeatureActivated и функция обхват

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

Аз съм с Visual Studio 2010 и разполагане държат недостатък с грешка "Възникна грешка при разполагане на стъпка"Добави решение": Обект номер не настроен на една инстанция на обект."

Аз бях като си код твърде буквално.  Е обхвата функцията на ниво уеб приложение, както е показано:

image

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

обществото заместите невалидни FeatureActivated(Свойства на SPFeatureReceiverProperties)
{

    // Не правете следното с web app scoped функции, Това води до отчаяние Усмивка
    // SPSite сайт = свойства.Feature.Parent като SPSite;

    SPWebApplication wa = свойства.Feature.Parent като SPWebApplication;

    Ако (WA == null) хвърли ново изключение("webapp2 е нулев.");

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

        Опитайте
        {
            Ако (работа.Името == List_JOB_NAME)

                работа.Изтриване();
        }
        улова (Изключение е)
        {
            хвърли ново изключение("маркер 2");
        } // Хвани изключение e
    }

    // инсталиране на проекта

    WeatherForecastTimerJob weatherForecastTimerJob =
        Нова WeatherForecastTimerJob(List_JOB_NAME, WA);

    SPMinuteSchedule график = нов SPMinuteSchedule();
    график.BeginSecond = 0;
    график.EndSecond = 59;
    график.Интервал = 5;
    weatherForecastTimerJob.Schedule = график;
    weatherForecastTimerJob.Update();

}

Основна по домовете е, че когато функцията е в обсега на уеб ап, SPFeatureReceiverProperties, че SharePoint преминава към вашия получател е уеб ап ниво параметри.  Старите блог влизане на Андрю предполага, тя е с обхват колекция от сайтове.

</край>

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

Следвайте ме на 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 explorer преглед на SharePoint 2010 библиотеки с документи.

Кодът има обичайните рекурсивни призовавам SPWeb и SPLists от дадена начална точка.  Обектът, който прави всички че преминаващи изгражда XML низ, който изглежда нещо подобно:

<sitecollection url =’HTTP://demo2010a:9090′>
 
<уеб
     заглавие = "Здравейте Световната пясък" 
     Шаблон = "сайт за екипи за бързо организиране, Автор, и споделяне на информация, БЛА БЛА БЛА ">

     <списък
        заглавие = "BCC_Health_Services_FAQs’
        Шаблон ='CustomList’
       
listid =’HTTP://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</списък>

     <списък
        заглавие = "BCC_Notifications" 
        Шаблон = "CustomList" 
        listid =’
HTTP://demo2010a:9090/helloworldsandbox[delim]5a5a13d1 - 877c - 41c 0-9063-b9612be80d5e’>
     </списък>

  </уеб>

</sitecollection>

Аз очаквам да чисти, че XML преди всичко е казано и направено.

Аз искам да в крайна сметка да получите тази информация до и в Treeview контрол.  Не точно земята разбиващ неща.

Предизвикателството, взех тук е да се свържете дървовидния изглед към контрол на XML източник на данни вместо ръчно изграждане на моя treenodes, като преминават през дървото.  Направих това, отчасти, защото аз съм умишлено вземане на нещата по-трудно за себе си (Това е един проект за обучение в крайна сметка) и отчасти, защото аз имам тази неясна представа, че изграждането на възли от дървото, като преминават през дървото не е добра идея в дългосрочен план.

Проблемът с този подход е, че Treeview контрол не знае за добрите качества на интересни възли като "списък" или "web", така тя показва тази продукция по подразбиране:

 

image

Това не е полезно.  Това е мястото, където помага на TreeNodeBinding клас.  Мога да използвам това да кажа Treeview контрол как тя трябва да се тълкува XML.  Ето един пример:

tnb = нов TreeNodeBinding();
tnb.DataMember = "списък"; // Това е на етикета в xml за сайт.
tnb.TargetField = "listid";
tnb.ValueField = "заглавие";
tnb.ToolTipField = "Шаблон";

Този задължителен казва treeview, че когато се установи, <списък> възел в XML, прилага подвързия за TargetField, ValueField и ToolTipField.  През май ап, тези карта както следва:

  • 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

Бърз и лесен: Изпращане на имейл използвате Gmail SMTP сървър в .NET буквата C#

Това не е точно нова тема, но когато трябваше да го направя, Открих много "Защо няма тази работа за мен" и не твърде много директни отговори. Надявам се някой намери тази полезна.

Следният код ще изпрати имейл, използвайки моя gmail акаунт да го направя, включително прикачените файлове:

използване на System.Net.Mail;
използване на System.Net;

NetworkCredential loginInfo = нов NetworkCredential("[Моя Gmail ID.]", "[Паролата си в Gmail]");
MailMessage MSG = нов MailMessage();
MSG. От = нов MailAddress("[М Gmail ИД]@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, ИД лишен от "@gmail.com”. Така, Ако my gmail email обръщение е "sharepoint@gmail.com"и парола е"xyzzy"редът ще изглежда така:

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

  • My gmail сметка е настроена да използва SSL и че не е проблем.
  • Има някои противоречива информация там за какво порт за използване. Аз използван порт 587 и то работник глоба за me.
  • В моя случай, Също така е необходимо да изпращате прикачени файлове. Че NIPFD обект има метод, който знае къде са мой прикачени файлове. Това е връщане напълно път (e.g. "c:\tempattachment1.jpg". В моя тест, Имах две приложения и те работник глоба.

Аз използван visual studio 2008 да пишете този код.

</край>

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

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

Technorati тагове: ,,,