В некоторых случаях необходимо включить аудит на WSS, в MOSS для этого есть стандартное решение, в WSS нужно установить дополнение.
Подробности вот в этой статье:
http://msdn.microsoft.com/en-us/magazine/cc794261.aspx?pr=blog
В некоторых случаях необходимо включить аудит на WSS, в MOSS для этого есть стандартное решение, в WSS нужно установить дополнение.
Подробности вот в этой статье:
http://msdn.microsoft.com/en-us/magazine/cc794261.aspx?pr=blog
Первые впечатления:
По своей работе столкнулся с ECM системой Alfresco, в общем впечатления не радужные.
Что не понравилось, бинарный пакет хоть и есть, но как всегда в мире опенсорсного софта устарел.
Ладно, немного покопались с ним все решили, дальше веселей сборка индексов при первом запуске, после поиска в интернете решение нашлось: Удалить каталог с индексами и удалить базу данных.
После проблема аутентификации в домене, снова феерическое удовольствие от Google – hunting’a.
Пока еще не решена проблема CIFS, убито на это все чудо уже 3 дня, моего личного времени.
И впечатления от продукта сразу скажу никакие, по моим представлениям если есть Step by Step Guide, то после выполнения всех шагов должен быть воспроизводимый результат. В общем меня не порадовало, и представил как феерично это все будет настраиваться на местах, вот реально не коробочный это продукт и рассчитан на привязку под конкретного поставщика решений, в общем денег на нем сделать сложно.
Мораль сей истории: не надо пытаться экономить, считать надо.
P.S. да я люблю продукты Microsoft
Проблема: добавить новую колонку в тип содержимого.
Описание: Прямой вызов Fields.Add(“имя”,SPFieldType.Text,false) на типе содержимого выдает исключение, поэтому мы немного изменим код и таки добьемся своего результата.
Первоначально создадим столбец узла:
Будем использовать метод создания поля из XML определения, что необходимо заметить мы используем предопределенный идентификатор для задания поля. Второй момент, при создании поля в качестве параметра name указывайте InternalName в дальнейшем, DisplayName можно переопределить.
string siteUrl=http://testingportal.com;
string fieldXml = "";
string fieldGuid="{21C910B8-BA41-413a-A87E-D0D05AC4A5A8}";
string fieldInternName="customField";
fieldXml = String.Format("<field id="\" group="\" name="\" format="\" type="\">", fieldGuid, fieldInternalName);
using (SPSite site = new SPSite (siteUrl))
{
using (SPWeb web = site.rootWeb)
{
rootWeb.Fields.AddFieldAsXml(fieldXml);
}
}
Просто создать новый тип содержимого невозможно, поэтому мы выбираем из уже существующих типов содержимого. Для создания типа содержимого воспользуйтесь «Фичей»
SPSite site = new SPSite (_siteUrl)
PublishingSite pubSite = new PublishingSite(site);
SPContentType contentType = pubSite.ContentTypes[contentTypeName];
SPField field = pubSite.RootWeb.Fields[fieldGuid];
SPFieldLink fieldLink = new SPFieldLink(field);
contentType.FieldLinks.Add(fieldLink);
contentType.Update(true);
Позже можно натйти нужное вам поле с помощью следующего кода.
foreach (SPFieldLink fieldRef in contentType.FieldLinks)
{
if (fieldRef.Id == fieldGuid)
return fieldRef;
}
Заключение, вот так иногда не вполне очевидно, но можно сделать практически все.
В общем некрасивая ошибка и трудно уловимая, а суть в том что при составлении CAML запроса я пропустил аттрибут Type='Text'. Решение как всегда нашлось однако времени было потрачено немало.
private String GenerateQuery(String postcode) { StringBuilder sbQuery = new StringBuilder(); sbQuery.Append("<Where>"); sbQuery.Append("<Eq>"); sbQuery.Append("<FieldRef Name='Title' />"); sbQuery.Append("<Value>1234AA</Value>"); sbQuery.Append("</Eq>"); sbQuery.Append("</Where>"); return sbQuery.ToString(); }
private String GenerateQuery(String postcode) { StringBuilder sbQuery = new StringBuilder(); sbQuery.Append("<Where>"); sbQuery.Append("<Eq>"); sbQuery.Append("<FieldRef Name='Title' />"); sbQuery.Append("<Value Type='Text'>1234AA</Value>"); sbQuery.Append("</Eq>"); sbQuery.Append("</Where>"); return sbQuery.ToString(); }