среда, января 25, 2006
Обработка обращения к IIS по "неправильному" порту.
четверг, января 19, 2006
Очередной прикол от Sharepoint
Application settings in C# 2.0 continued
void LoadSettings(ref object settings) {
PropertyInfo[] props = settings.GetType().GetProperties();
string path = this.GetType().Assembly.Location;
string cfgpath=path+".config";
if (! File.Exists(cfgpath)) return;
XmlDocument cfg = new XmlDocument();
try {
cfg.Load(cfgpath);
} catch (Exception err) {
....
return;
}
foreach (PropertyInfo prop in props) {
if (!prop.CanWrite) continue;
XmlNode setting = cfg.SelectSingleNode("//setting[@name = '" + prop.Name + "']" );
object value = "";
if (setting != null) {
try {
value = setting.SelectSingleNode("value").InnerText;
prop.SetValue(settings, value, null);
} catch { }
}
}
}
Использование:
object osettings = new Settings();
LoadSettings(ref osettings);
settings = (Settings)osettings;
Примечание. При настройке параметров в VS 2005 область действия (Scope) следует установить User (иначе будет сгенерён класс Settings с readonly свойствами).
вторник, января 17, 2006
«Секретная» страница
Для каждого юзера выдаётся список предназначенных для него файлов, которые можно сгрузить.
Регулируется вот таким конфигом:
<?xml version="1.0" encoding="utf-8" ?>
<users>
<user dirs="adir" pwd="ap" name="anton">
<user dirs="*" pwd="dp" name="DkmS">
</users>
Вполне даже симпатично получилось. Заодно кой-чему научился.
воскресенье, января 15, 2006
Settins & Versions
public static string AnyVersion( Assembly assembly) {
object[] attrs=null;
try{
attrs=assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute ),false);
}catch{}
if (attrs != null && attrs.Length > 0) {
return ((AssemblyFileVersionAttribute)attrs[0]).Version;
}
return assembly.GetName().Version.ToString(4);
}
четверг, января 12, 2006
Application settings in C# 2.0
Использование новых возможностей по конфигурированию приложений в VS 2005 применительно к VB.NET описано вот тут.
В C# настройка средствами VS (в т.ч. Express Edition) выполняется точно так же. Отличается, ввиду отсутствия в C# конструкции My.Settings, способ использования этих средств.
В модуле, где необходимо использовать настройки, нужно подключить пространство имён Properties:
using MyProgram.Properties;
В соответствующем классе объявить член класса:
private Settings settings = new Settings();
Поля этого класса уже можно использовать по назначению:
this.Size = settings.MainFormSize;
Замечание.
Такую же операцию следует выполнить во всех использующих настройки модулях (классах, формах и т.п.).
четверг, декабря 29, 2005
среда, декабря 28, 2005
Из Writely
/// <summary>
/// Description for XmlView.
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:XmlView runat=server></{0}:XmlView>"),
XmlRoot(Namespace="XMLviewer")]
public class XmlView : Microsoft.SharePoint.WebPartPages.WebPart {
private const string defaultText = "XmlView";
private string text = defaultText;
private string xml = "";
private string xmllink = "";
private string xsl = "";
private string xsllink = "";
private Evidence evidence=null;
}
XmlWebPart & XmlView continued
xsl. LoadXml(xslScript); //в строке - текст xsl
XslTransform xslt =new XslTransform();
xslt.Load (new XmlNodeReader(xsl));
xsl.LoadXml(xslScript); //в строке - текст xsl
XslTransform xslt= new XslTransform();
XmlUrlResolver resolver=new XmlUrlResolver();
XmlDocument xsl = new XmlDocument();
xsl.Load( http://...test.xsl);
XmlUrlResolver resolver=new XmlUrlResolver();
resolver.Credentials = CredentialCache .DefaultNetworkCredentials;
XslCompiledTransform xslt= new XslCompiledTransform();
XsltSettings settings = new XsltSettings ();
settings.EnableDocumentFunction = true;
settings.EnableScript = true;
xslt.Load(new XmlNodeReader (xsl),settings,resolver);
вторник, декабря 13, 2005
Очередной прикол от Sharepoint
SPList list = web.Lists[ListName];
SPListItem WholeItem = list.Items[0];
WholeItem["Viewers"] = text;
WholeItem.Update();
и
SPList list = web.Lists[ListName];
list.Items[0]["Viewers"] = text;
list.Items[0].Update();
имеют совершенно разный эффект - второй ничего никуда не пишет!
четверг, декабря 08, 2005
вторник, ноября 29, 2005
WSS & SPS Administrator
Более подробно - здесь
пятница, ноября 18, 2005
Microsoft.SharePoint.WebPartPages.XmlWebPart
четверг, ноября 17, 2005
Sharepoint Portal & .NET 2.0 continued
Установил релиз FW .NET 2.0 (описанное ранее было с beta2) - приключения с атрибутом enableEventValidation закончились.
Обнаружилась бяка хуже - перестала работать как следует функция создания узла в портале. Сам узел создаётся, но до формирования по шаблону дело не доходит - заедает на второй странице " Добавление ссылки на узел".
В итоге в области "Узлы" ссылки на новый узел нет, при первом обращении к узлу по адресу сначала выползает форма выбора шаблонов узла.
Попробовал варианты переключения версии .net на установленном узле портала и установки на сервер с включённым вторым дотнетом - один фиг. Мелочь, но противно.
Правда, у некоторых гладко проходит - Matthew Cosier's Blog: WSS and SPS on .NET 2.0
Но у некоторых - тоже не проходит: Steven Van de Craen's Blog
суббота, ноября 05, 2005
Sharepoint notes 4.
SPFieldLookup newfield = list.Fields[fieldName] as SPFieldLookup ;
newfield.LookupField = lookupFieldName;
AddLookup(list, fieldName, lookupListID, fieldRequired, lookupFieldName);
SPFieldLookup newfield = list.Fields[fieldName] as SPFieldLookup;
XmlDocument fxml = new XmlDocument();
XmlElement xf = fxml.CreateElement("Field");
xf.SetAttribute("DisplayName" , FieldName);
xf.SetAttribute("Type", "Lookup" );
xf.SetAttribute("Required", FieldRequired.ToString ());
xf.SetAttribute("List", LookupListID.ToString("B" ));
xf.SetAttribute("ColName", "int1" );
xf.SetAttribute("ShowField", LookupFieldName);
return list.Fields.AddFieldAsXml(xf.OuterXml);
}
Sharepoint notes 3.
The Delete method of the SPFieldCollection class deletes the field with the specified display name from the collection.
public void Delete(
string strName
);
Sharepoint notes 3.
The Delete method of the SPFieldCollection class deletes the field with the specified display name from the collection.
public void Delete(
string strName
);
пятница, ноября 04, 2005
Sharepoint notes 2.
The Add method of the SPFieldCollection class creates a field in the collection.
public string Add(
string strDisplayName,
Microsoft.SharePoint.SPFieldType type,
bool bRequired
);
вторник, ноября 01, 2005
Sharepoint notes 1.
role.AddUser(user);
В SDK никаких оговорок по поводу этой конструкции не видно. Исполняется молча, но ничего не добавляет :-( Работает только такая конструкция:
role.AddUser( user.LoginName, user.Email, user.Name, user.Notes + "(added by Wss Admin)");
Мелочь, но время потрачено приличное.
.NET 2.0 release
Установил на втором компьютере релиз и SDK.
Попробовал собрать на нём при помощи MsBuild проект от 2005-й Студии beta 2. Собирается, и даже работает.
Скомпилил своего Wss Admin'а На 2005-й Студии. Работает как под второй бетой, так и под релизом на "сервере".
Осталось уговорить заказчика перейти на вторую версию (пусть и без Sharepoint'а пока).
