Задался целью выяснить, можно ли обойтись одной Студией (желательно, 2010-й) для разработок (хотя бы, для модификаций имеющихся) – веб-частей, утилит, рабочих процессов и т.д. для текущей версии Sharepoint (до использования новой версии и разработок для неё когда ещё дело дойдёт…). Выяснилось, что новая Студия вполне спокойно относится к проектам, сделанным в Студии 2008 без использования VSeWss – их можно редактировать, компилировать и делать другие необходимые действия. Даже можно включить использование .NET 4.0, правда, исполняться полученный код не станет . При отладке нужно переключить версию отлаживаемого управляемого кода на 2.0 (по умолчанию используется 4.0, а они вместе отлаживаться не могут).
Для разработок же под Silverlight новая Студия намного удобней – в неё включили часть функциональности Expression и отпала необходимость прыгать между приложениями.
В общем, можно потихоньку переползать на Студию 2010 – по крайней мере, выглядит она “красивше”. Правда, новый Help 3.0 не нравится совсем: с запуском дополнительного web-сервера примириться ещё можно, но вот демонстрация материала в окне браузера раздражает очень сильно - вызывается не новый экземпляр браузера, а тот, который был запущен последним (правда, на собственное окно браузера почем-то внимания не обращается). [А я для удобства работы использую несколько рабочих столов и появление браузера с другого стола генерирует не очень печатные слова…]. Спишем пока что на бету.
Да, интересное занятие получила Шарепойнт-тусовка с выходом бета-версии. Занятие сопровождается большой радостью – версия сразу на многих языках, русском в том числе. Пока что этим радость и исчерпывается .
В общем, получить что-то работающее на моём компьютере удалось только с четвёртой попытки. Установка на Windows 7 (по инструкции с MSDN) началась довольно бодро, но установщик предложил выполнить обновление существующей версии WSS 2007. Пришлось отказаться – работать, всё же, на чём-то надо…
Эксперименты продолжились на Server 2008 R2 в VirtualBox (почему-то Windows Virtual PC не признаёт 64-битных гостевых систем…) с памятью 2 ГБ.
Так, установить office sharepoint server 2010 удалось, но открыть даже страницу Центра администрирования не получилось – явно ресурсов маловато.
Установить office sharepoint foundation server 2010 (SPF, так теперь придётся WSS называть) привычным образом (как ферму с использованием своей установки SQL Server 2008) не получилось – мастеру настройки не понравилось, что предлагаемый ему пользователь не является доменным, а поднимать на виртуалке домен в мои планы пока что не входит…
В итоге пришлось ограничиться “автономной” установкой SPF 2010. Чемпионских скоростей работы не наблюдается, но для экспериментов сойдёт…
Одно хорошо – обнаружилась веб-часть “Веб-часть Silverlight”, с такой же практически функциональностью, что и SilverLight App Launcher.
В процессе глубоко научных попыток использовать SilverLight в пользовательском интерфейсе собственных разработок получилась веб-часть общего назначения для запуска SilverLight-приложений на Шарепойнт-страницах. Собрал туда разные идеи из блогов и др. источников и выложил вместе с исходниками. Может, ещё кому пригодится…
Вывесил веб-часть HieView для вывода на страницу таких данных, содержащихся в списках Шарепойнта. Часто на форуме спрашивают, особенно новички: первая задача, которую им начальство ставит – изобразить оргструктуру предприятия. Пускай пользуются…
Не могла эта 13-я пятница просто так пройти… Выяснилось, что не запускается Writer, молча закрывается, и фсё… Один раз пообещал сказать, в чём дело, если решение разыщет, но пока молчит.
Пришлось самому. Восстановление/переустановка не помогли, помогла попытка запуска от имени другого пользователя – запустился и захотел настраиваться. Осталось порыться в собственном профиле, и в файле "C:\Users\DkmS\AppData\Local\Windows Live Writer\Windows Live Writer.log" обнаружить причину явно неадекватного поведения примочки – не смогла обнаружить папку для черновиков, заданную в настройках. Ну да, не было такой папки (машину модернизировал, диски менял, вот и пропала), но это вовсе не повод молча заваливаться…
Поотрывать бы “программерам” примочки всё, что отрывается…
Казалось бы, два определения свойства эквивалентны:
1: public StyleOfViewList ListViewStyle {
2: get { return listviewstyle; }
3: set { listviewstyle = value; }
4: }
5: StyleOfViewList listviewstyle = StyleOfViewList.GridStyle;
и
1: public StyleOfViewList ListViewStyle2 { get; set; }
Тип свойств – обыкновенное перечисление
1: public enum StyleOfViewList : byte { GridStyle = 1, PackedStyle = 2 }
Действительно, Рефлектор показывает для обеих конструкций практически одинаковый код, да и опыт с документацией подсказывают, что должно быть без разницы, какую из конструкций использовать… И так оно и есть, пока вторая конструкция не использована в определении свойства веб-части (с атрибутом [WebPartStorage]) – такая веб-часть становится неработоспособной.Замена на первую конструкцию излечивает проблему. Нда…
Батареи уже затопили… Ждёшь, ждёшь этого лета, а оно проскакивает вмиг…
Правда, на нынешнее жаловаться грешно – сравнительно тёплое, без ужасной жары и затяжных дождей. Да и довольно долго продолжалось – с середины мая до конца сентября.
Но как-то резко холодно стало, дома даже пришлось печку включать – расход электричества сразу подскочил раза в полтора…
В очередной раз пытаюсь найти решение возникшей на ровном месте задачи получения информации с удалённых узлов Шарепойнта.
Собственно, особого разнообразия вариантов и нет – к неработающему способу обращения по механизму WebServices добавляется способ с использованием WCF. Смотрим, что получится:
1: string endPointUrl = url.TrimEnd("/".ToCharArray()) + "/_vti_bin/Lists.asmx";
2: ListsSoapClient client = new ListsSoapClient("ListsSoap", endPointUrl);
3: client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
4: client.ClientCredentials.Windows.AllowNtlm = true;
5: client.ClientCredentials.Windows.ClientCredential = new NetworkCredential();
6: // from http://blogs.msdn.com/kaevans/archive/2009/03/10/calling-sharepoint-lists-web-service-using-wcf.aspx
7: client.Open();
8: XmlNode tst = null;
9: try {
10: tst = client.GetListCollection();
11: Console.WriteLine(string.Format("success: {0} bytes", tst.OuterXml.Length));
12: } catch (Exception err) {
13: Console.WriteLine(string.Format("error: {0}", err.Message));
14: }
Результат, собственно, тот же, что в предыдущем опыте – локальные узлы (находящиеся на том же компьютере, откуда делается запрос, и на компьютерах, виртуальных или физических, в локальной сети) отдают данные как ожидается, при обращении к удалённым узлам (заведомо имеющим NTLM аутентификацию и разрешённый анонимный доступ) получаем исключение с сообщением “The HTTP request is unauthorized with client authentication scheme 'Ntlm'. The authentication header received from the server was 'NTLM'”. Весьма информативно, да…
Раскопки показывают, что народ с этим тоже пытается как-то бороться (безуспешно, впрочем), а корень зла описан в KB-статье. Оказывается, это борются так с “отражёнными атаками”, которые неизвестно, бывают ли, но средство борьбы надёжное – фиг прорвёшься. Что называется, лес рубят – щепки летят.
В общем, фантазия иссякает… Осталось попробовать водрузить на сервер свой сервис и пытаться через него как-то передавать нужное, но это никак не поправит ситуации, когда удалённый сервер – чужой.
Сгорела первая лампочка из кучи вкрученных в феврале. Запускаться перестала, точнее. Пришлось вкрутить обратно старую, накаливания, на 75 Вт. Вместо обещанных 8 лет или 8000 часов жизни лампочка (называлась “Космос” и прикидывалась российской) ограничилась, в лучшем случае, 800 часов.
Экономия составила, по оптимистичной оценке, 45 кВт*час или 100-110 рублей. В принципе, покупка самой лампочки оправдалась, но никакой “прибыли”, естественно, не случилось. Смотрим дальше…
P.S. Что-то подозрительно активно наше любимое правительство с этими лампочками забегало. Кто-то из родни бизнес прикупил?
Выяснилось, что при обращении по адресу наподобие http://server/site/folder/file.aspx?id=N вне зависимости от содержания файла file.aspx происходит переход на N-й файл в папке folder. Особенно умиляет диагностика, когда N превышает количество файлов – в адресной строке браузера написано то, что и должно быть, а на странице ошибок Шарепойнт – что такой страницы нет или она изменена другим пользователем.
А я таким способом пытался в веб-часть на странице передать ID элемента списка… В общем, хотелось бы на умника посмотреть, который такую гадость придумал. Причём и в новом WSS 4 наблюдается такое же поведение.