катэгорыя Архівы: 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 views can be used when Creating an Alert ?"), 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. Аднак, Калі вы думаеце, што вам гэта трэба, але не ведаю, як, Майкла рэцэнзіі здаецца, выдатны падручнік па гэтай тэме.

</канец>

Падпісацца на мой блог.

Выконвайце за мной на 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, Каляндар можа быць, воля, а?

  2. Рэдагаванне вэб-часткі, look for an "export" функцыю і … Bzzz! 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, , Што пакідае 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, але яна ёсць: "<ListViewXml …. >кадуецца вар'яцтва</ListViewXml>". Канкрэтна, ёсць гэты камень:

<Запыт>
<Дзе>
<DateRangesOverlap>
<FieldRef Name="EventDate"/>
<FieldRef Name="EndDate"/>
<FieldRef Name="RecurrenceID"/>
<Value Type="DateTime">
<Месяц />
</Значэнне>
</DateRangesOverlap>
</Дзе>
<OrderBy><FieldRef Name="Session_x0020_ID" /></OrderBy>
</Запыт>

(Я расшыфраваў &л;Х і &GT і падзяліць іх на некалькі радкоў для яснасці).

Дадаць <OrderBy> трохі і цяпер ён сартуе па ID сесіі, Не ўнутраны ідэнтыфікатар элемента спісу.

Гіганцкія наканечнік або’ капелюшы Бэкі Isserman за яе каментар да блога аўтара Сагі Иша: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. I wouldn’t have put the <OrderBy> у патрэбным месцы без яе каментар.

Я спадзяюся, каб напісаць гэта больш ясна з скрыншоты хутка, але ў выпадку, я ніколі не раблю, па меншай меры я гэта шмат.

</канец>

Асаблівасці SharePoint & Рашэнні для кіравання — Не забывайце U ў 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. Аднак, ўцягванне з'яўляецца патэнцыйна больш складаных.

Дадзенае рашэнне можа стварыць падобныя артэфакты:

  • Тып кантэнту
  • Вызначэнне спісу
  • Вызначэнне сайта
  • Дадзеныя ў спісе
  • Нават рэсіверы
  • InfoPath Forms

Гэты спіс можна працягваць.

У той час як гэта, відавочна, важна распрацаваць рашэнне, якое стварае асобнік гэтых артэфактаў правільна, 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 Тэгі:

Quick Fix: Вэб-сэрвісы, якія ўзаемадзейнічаюць з 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 майстар налады тэхналогій і, размешчаны ў меню Пуск у кіраванне.
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, Мне трэба абнавіць метададзеныя тэчкі для вызначанага элемента, ідэнтыфікатар якога я ведаю.

Вось невялікі кансольнага прыкладання (прызначаны для працы на серверах фермы) , Якая прымае 2 аргументу:: ID элемента і значэнне, якое прысвойваецца полі, "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 = "Паведамленне Загаловак"

 Кансоль.WriteLine(м.д.п. + "Увод у эксплуатацыю.  Я Апошняе змяненне 08/04/08.");

            радок URL = http://localhost/xyzzy;

            выкарыстанне (SPSite oSPSite = новы SPSite(URL-адрас))
            {

                выкарыстанне (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["Дакументы"];

                    Кансоль.WriteLine(м.д.п. + "Ёсць у бібліятэцы дакументаў.");

                    Кансоль.WriteLine(м.д.п. + "Doc Бібліятэка колькасць элементаў: [" + docLib.ItemCount + "].");

                    Int FolderID = 0;
                    радок NewStatus = "XYZZY";

                    FolderID = System.Канвертаваць.ToInt32(аргументы[0].ToString());
                    Кансоль.WriteLine("Шукаю тэчку пункт: [" + FolderID + "].");

                    SPListItem Li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Кансоль.WriteLine(м.д.п. + "Атрымаў бацькоўскай тэчкі.");

                    NewStatus = аргументы[1].ToString();
                    Кансоль.WriteLine("Усталяванне статусу [" + NewStatus + "].");

                    Кансоль.WriteLine("Націсніце Увод для здзяйснення абнаўлення або CTRL-C, каб перапыніць.");

                    Кансоль.ReadLine();

                    thisItemFolder.Item["Стан зацвярджэння"] = NewStatus;
                    thisItemFolder.Item.Update();

                    Кансоль.WriteLine(м.д.п. + "Гатовыя абнаўлення тэчку.  Выхад.");

                } // выкарыстанне SPWeb

            } // выкарыстанне SPSite

 Кансоль.WriteLine(м.д.п. + "Гатова.");

        } // Асноўны

    } // Клас FolderSync
} // Прастора назваў
</код>

</канец>

Падпісацца на мой блог.

Утойванне Карыстальніцкія дзеянні ў 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. У асноўным, Я выкарыстаў яго ў якасці грубай форме адладкі.

Да майго вялікага збянтэжаную, гэтага артэфакта адладкі зрабіў свой шлях ад распрацоўніка на ЕСХН і вытворчасці, перш чым хто-то знайшоў час просяць, "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, Я мяркую, вы будзеце мець, каб зрабіць змены ў кожнай.

</канец>

Падпісацца на мой блог.

Quick Fix: Доступ да сайта 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 адладкі тэхнікі, Я і на самай справе знайсці 11 Вэб-часткі на старонцы, only two of which were visible. Even better (ад let's-надзея-I-знайсці-што-то-нязграбна-вось-што-я-магу-FIX перспектывы), three of those closed web parts had a name of "Error".

Я выдаліў гэтыя вэб-часткі (якая сама прыняла на здзіўленне доўга) and that solved the problem. На сёння 🙂

</канец>

Падпісацца на мой блог.

Technorati Тэгі:

Выклік службаў SSRS Web з WSS / MOSS ў навакольным асяроддзі 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 = новы Ідэнтыфікацыя(); 
auth.Url = "HTTP://URL / _vti_bin / Authentication.asmx";
auth.CookieContainer =
новы CookieContainer();
LoginResult вынік = auth.login("userid", "password");
калі (result.ErrorCode == LoginErrorCode.NoError) 
{
// Няма памылкі, так што атрымаць печыва.
CookieCollection печыва = auth.CookieContainer.GetCookies(новы Уры(auth.Url));
Cookie authCookie = печыва[result.CookieName];
RS =
новы ReportingService2006();
rs.Url =
"HTTP://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs.CookieContainer =
новы CookieContainer();
rs.CookieContainer.Add(authCookie);
}
старацца
{
  rs.CreateSubscription(паведаміць, extSettings, па змяншэнні, типСобытия, matchData, parameters1);
}
злавіць (Выключэнне былых)
{
  Console.WriteLine(ex.Message.ToString());
}

Я інтэрпрэтаваць рэчы так працаваць:

  • Наш вэб-частка павінна набраць службу праверкі сапраўднасці і сказаць, "Hey, Тоні, гэта я!".
  • Адказаў служба Аўтэнтыфікацыя кажучы, "Hey, I know you. How are the kids? Here’s a token."
  • Заклікаем SSRS службу і сказаць, "Tony sent me, вось маркер."

</канец>

Падпісацца на мой блог.

Хутка і проста: Прадастаўленне вэб-вузла з дапамогай аб'ектнай мадэлі SharePoint ў 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.

Гэты код стварае новы сайт Wiki:

 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 Тэгі: