.NET

Visual Studio 2010 - Tools for SharePoint

Direttamente dal blog del team di SharePoint, una buona notizia per tutti gli sviluppatori SharePoint. Technorati Tags: SharePoint, .NET

Visual Studio 2010

Cominciano ad uscire le notizie sulla nuova versione di Visual Studio. Per i curiosi qui è presente una overview del prodotto. Technorati Tags: .NET

SharePoint 3.0 - Eccezione "Operation is not valid due to the current state of the object"

Può capitare di dover aggiornare tramite codice, degli Item su cui l’utente corrente non ha privilegi di scrittura. SharePoint 3.0 ci viene in aiuto con il metodo SPSecurity.RunWithElevatedPrivileges che permette di effettuare esattamente quello di cui abbiamo bisogno. Tutto sembra facile, ma se proviamo ad eseguire questo codice:   SPSecurity.RunWithElevatedPrivileges(delegate() { ...

Lettura dei suffissi UPN in Active Directory

Mi è capitato di sviluppare un’applicazione in cui fosse necessario avere una lista contenente tutti gli “UPN Suffix” del dominio (il principale e gli alternativi); praticamente quello che ci viene proposto nella combobox relativamente allo “user logon name” dello snap-in di “ActiveDirectory Users and Computers”. Il codice non è molto difficile:   public string[] GetUpnSuffix() ...

SharePoint 2007 - Come inserire dati all'interno di una lista senza averne i privilegi

Può capitare, ad esempio nello sviluppo di una WebPart, che si abbia la necessità di inserire dei dati all’interno di una lista SharePoint senza che l’utente che sta eseguendo la WebPart abbia alcun diritto su quella lista. Con SharePoint 2007 abbiamo a disposizione il comando RunWithElevatedPrivileges che ci permette di eseguire del codice con l’identità dell’utente SHAREPOINT\System account, tuttavia, oltre a tutte le considerazioni in materia di sicurezza dobbiamo prendere alcuni accorgimenti per far funzionare il nostro codice: ·         Dopo aver elvevato i privilegi dovremmo istanziare nuovamente le classi SPSite ed SPWeb senza poter utilizzare quelle disponibili nel context in quanto quelle...

SharePoint 2007 - Rimuovere i diritti di accesso ad una cartella

Un’importante innovazione che troviamo in SharePoint 2007, consiste nella possibilità di avere differenti autorizzazioni su ogni singola cartella di una document library (nella versione 2003 le autorizzazioni erano invece comuni su tutta la document library). Se ad esempio vogliamo rimuovere i diritti di accesso a tutti i gruppi ad eccezione di uno, sarà sufficiente interrompere la RoleInheritance sulla cartella interessata e rimuovere i vari gruppi dall’item.   ...

Programmare con SharePoint Services 3.0

Due interessanti articoli per tutti coloro che debbono iniziare a sviluppare con SharePoint e non sanno da cosa cominciare: Development Tools and Techniques for Working with Code in Windows SharePoint Services 3.0 (Part 1 of 2) Development Tools and Techniques for Working with Code in Windows SharePoint Services 3.0 (Part 2 of 2)   Technorati Tags: SharePoint

SharePoint 2007 - Come verificare l'esistenza di una cartella

Spesso capita di dover creare automaticamente una serie di cartelle all'interno di una raccolta documenti, prima di creare le cartelle è però sempre buona norma verificarne l'esistenza tramite il la proprietà "Exists" della classe SPFolder.   // Verifica l'esistenza del folder passato come argomento (URL completo del folder) public bool ExistFolder(string folderName) ...

WF - Tracking Services

Due interessanti articoli da leggere sul servizio di Tracking in Workflow Foundation: Windows Workflow Foundation: Tracking Service Introduction Windows Workflow Foundation: Tracking Service Deep Dive   Technorati Tags: .NET, Framework 3.0

[70-541, #7] - Come esplorare il contenuto di una cartella in SharePoint

Se vogliamo costruire un nostro browser personale per esplorare il contenuto delle cartelle di SharePoint è possibile utilizzare la collection “Files”  contenuta nella classe SPFolder, semplicemente conoscendo l’URL della cartella di cui si desidera conoscere il contenuto.   // Restitusce un array-list con il contenuto dei files di una specifica cartella public System.Collections.ArrayList GetFolderFiles(string targetFolder) ...

[70-541, #6] - Annullare il check-out di un documento in SharePoint

Per concludere l’argomento relativo al check-in / check-out di un documento parliamo di come è possibile annullare un check-out effettuato su un documento. il metodo “UndoCheckOut” dell’object model di SharePoint è quello che fa al caso nostro.   // Annullare il check-out di un file passando come argomento l’URL dello stesso public void UndoCheckout(string fileUrl) {       try       {             using (SPSite site = new SPSite(fileUrl))             {                   using (SPWeb web = site.OpenWeb())                   {                         SPFile file = web.GetFile(fileUrl);                           file.UndoCheckOut();                         return;                   }             }       }       catch (System.Exception ee)       {             throw ee;       } }  

[70-541, #5] - Come effettuare il check-out ed il download di un documento in SharePoint

Tramite questa funzione è possibile effettuare il check-out di un documento ed effettuare il download dello stesso. Questa funzione può essere utilizzata abbinata a quella di verifica dello stato di check-out descritta nel precedente post.   // Effettuare il check-out di un file ed effettuare il download del suo // contenuto passando come argomento...

[70-541, #4] - Come verificare lo stato di check-out di un documento in SharePoint

Se proviamo a scaricare un documento da una Documen Library di SharePoint in stato di check-in ci viene ovviamente restituito un errore. La stessa cosa avviene se proviamo ad effettuare il check-out di un documento che si trovi già in stato di check-out. Abbiamo la necessità di verificare lo stato di Check-out del documento prima di compiere queste operazioni. Per fortuna l’object model di SharePoint ci mette a disposizione gli appositi metodi:   ...

[70-541, #3] - Come effettuare il check-in di un documento in SharePoint

Una volta fatto l’upload del nostro documento all’interno della Document Library di SharePoint, ecco come effettuarne il check-in.   // Effettuare il Check-in di un file passando come argomento l’URL dello stesso public void CheckIn(string fileUrl, string comments) { ...

[70-541, #2] - Come creare una cartella in una Document Library di SharePoint

Altra funzione di uso comune è quella che permette di creare una cartella all’interno di una document library.   // Creare una sottocartella all’interno di una document library // Il metodo restituisce l’URL alla cartella creata public string CreateSubFolder(string folderName, string targetFolder) ...

[70-541, #1] - Come caricare un documento in SharePoint

Ultimi giorni di preparazione per l’esame 70-540 dedicati all’uso dell’object model di SharePoint. Ovvero come scrivere il codice che effettua tutte quelle semplici operazioni che normalmente vengono effettuate dal sito SharePoint. Cominciamo con una delle funzioni basilari: effettuare l’upload di un documento all’interno di una document library.   // Effettuare l’upload di un documento passando il suo nome, il folder di destinazione ...

SharePoint 2007 - Certificazioni in Beta

Direttamente dal Blog del Team di SharePoint l’annuncio dell’invito a partecipare agli esami di certificazione su SharePoint 2007 in versione Beta: ·         Exam 70-542: Microsoft Office SharePoint Server 2007 – Application Development ·         Exam 70-541: Microsoft Windows SharePoint Services 3.0 - Application Development   Per la verità ci sono ancora dei problemi nella prenotazione per quanto riguarda le date, ma i codici promozionali funzionano correttamente.   Technorati Tags: SharePoint, .NET, Certificazioni

SharePoint 2007 - WebCast

Visto che in italiano si trova ancora molto poco, ecco una serie di WebCast in inglese su SharePoint 2007 molto interessanti.   Planning for and Deploying Office SharePoint Server 2007 (Part 1 of 2) Planning for and Deploying Office SharePoint Server 2007 (Part 2 of 2) Infrastructure Topics in SharePoint Products and Technologies: Administrative Architecture and Planning for Deployment Disaster Recovery Planning for Office SharePoint Server 2007 How Microsoft IT Deployed and Architected SharePoint Server 2007 Upgrading and Migrating to Office SharePoint Server 2007   Office SharePoint Server 2007 Business Data Catalog (Part 1 of 2) Office SharePoint Server 2007 Business Data Catalog (Part 2 of 2)   SharePoint Server 2007...

SharePoint 2007 - Come ottenere l'elenco dei siti esistenti

Il modello ad oggetti relativo all’amministrazione dell’ambiente SharePoint è piuttosto cambiato rispetto alla versione 2003. Nella versione precedente, per ottenere l’elenco dei siti esistenti bisognava utilizzare la classe SPGlobalAdmin mentre in quella attuale, anche se viene ancora supportata tale classe per ragioni di compatibilità, è stato introdotto il concetto di WebApplication. Molto interessanti da approfondire sono anche le classi SPFarm ed SPServer.   SPWebApplicationCollection webAppColl...

SharePoint 2007 e Workflow - Link utili

Come riportato dal blog di Joris Poelmans: una serie di link per tutti coloro che sviluppano workflow su SharePoint.   Cominciare a leggere le basi dei workflow su WSS e MOSS: Understanding Workflow in Windows SharePoint Services V3 and the 2007 Microsoft Office system Developer Introduction to Workflows for Windows SharePoint Services V3 and SharePoint Server 2007 Introduction to SharePoint Workflow Dare un’occhiata ad una serie di articoli sui workflow  scritti da Eilene Hao sul suo Blog SharePoint – (Ecco i più letti): Developing workflows in VS: Part 1 - Workflow objects and a crash course on mechanics Developing workflows in VS: Part 2 - Planning your workflow :...

Best Practices: Using Disposable Windows SharePoint Services Objects

Un articolo da tenere sempre in considerazione quando si programma con SharePoint.   http://msdn2.microsoft.com/en-us/sharepoint/ms778813.aspx   Technorati Tags: SharePoint, .NET

SharePoint 2007 - Query paginate

Quando si eseguono delle query sulle document library di SharePoint, esiste la possibilità di incorrere in un errore piuttosto infido anche dopo molto tempo che il nostro applicativo si trova in produzione. Magari perché quel particolare folder contiene ora più elementi di quanto avevamo previsto o magari perché l’amministratore del sito ha ridotto il limite degli items visualizzabili per quella particolare vista, la nostra query da ora un risultato su più pagine ed il nostro codice non funziona più :-( Per ovviare a tale situazione è sempre buona norma verificare la proprietà ListItemCollectionPosition ed effettuare un loop finché non ci ritorna...

Peformance characteristics of Windows Workflow Foundation

Un articolo da non perdere per tutti coloro che vogliono sviluppare con WF ed ottenere buone prestazioni.   http://msdn2.microsoft.com/en-us/netframework/aa973808.aspx   Technorati Tags: .NET, Framework 3.0

Sharepoint Services 3.0 Tools

Microsoft ha rilasciato queste extensions per Visual Studio 2005 molto interessanti.   http://www.microsoft.com/downloads/details.aspx?familyid=19f21e5e-b715-4f0c-b959-8c6dcbdc1057&displaylang=en   Technorati Tags: SharePoint, .NET

Screencast WF

Una serie di Screecast molto interessanti su Windows Workflow Foundation.   http://wf.netfx3.com/files/folders/screencasts/default.aspx?ppage=1   Technorati Tags: .NET, Framework 3.0

SharePoint 2007 - Come creare un link ad un documento

Ho avuto la necessità di creare, all’interno di una “document library”, un link ad un documento contenuto in un altro percorso. Tale funzionalità è supportata nativamente da SharePoint tramite il Content-Type “Link to a document”, tuttavia non sono riuscito a trovare nessuna documentazione su come fosse possibile ottenere questo risultato da codice. Ho scoperto che le librerie di SharePoint non espongono nessun metodo per ottenere questo risultato, e che l’unica cosa che viene fatta è la creazione a Run-Time di un file .aspx che contiene un UrlRedirector. La cosa che assolutamente non mi piace è il fatto che, il contenuto...

Starting Innovation Tour

Un evento da non perdere ;-) http://www.microsoft.com/italy/lancio/roadshow/eventi/technical.mspx   Technorati Tags: Exchange, .NET, XML, SharePoint

Nuova virtual machine

Sto finendo di configurare la mia nuova virtual machine; sofware installato: Windows Server 2003 Exchange SQL Server 2005 Visual Studio 2005 SharePoint Portal Server BizTalk 2006 Access...

Riconnettere una Mailbox Exchange in stato TombStoned

Se viene cancellato un utente da Active Directory a cui era associata una MailBox Exchange, quest’ultima non viene cancellata insieme all’utente, ma viene disconnessa e rimane in stato “tombstoned” per 30 giorni (valore di default). E’ comunque possibile riconnettere una MailBox in questo stato ad un altro utente utilizzando il seguente codice:   string server = "MIOSERVER"; ...

Creare una MailBox in Exchange (un'altra soluzione)

In un mio precedente post avevo spiegato come creare una mailbox in Exchange utilizzando l’SDK di Exchange e .NET; è una soluzione che funziona correttamente, tuttavia a livello di performance lascia un po’ a desiderare, inoltre obbliga ad installare l’SDK di Exchange sul client che utilizziamo. Per fortuna esiste una soluzione alternativa, ovvero scrivere direttamente su Active Directory tutti gli attributi necessari per l’attivazione della MailBox:   DirectoryEntry user = new DirectoryEntry("LDAP://CN=username,DC=myDomain,DC=local");   // Definisce i proxyAddresses string[] proxy = {"SMTP:username@ugidotnet.it", "X400:c=US;a= ;p=Organization;o=Exchange;s=samaccountname;"};   // Imposta le proprietà user.Properties["mail"].Value = " nomeutente@ugidotnet.it"; user.Properties["textEncodedORAddress"].Value = "X400:c=US;a= ;p=Organization;o=Exchange;s=username;"; user.Properties["proxyAddresses"].Value = proxy; user.Properties["msExchUserAccountControl"].Value = 0;   user.Properties["mDBUseDefaults"].Value = "FALSE"; user.Properties["mDBOverHardQuotaLimit"].Value = 3145728; user.Properties["mDBOverQuotaLimit"].Value = 3145728; user.Properties["mDBStorageQuota"].Value = 2831155; user.Properties["msExchQueryBaseDN"].Value = "OU=Empty,OU=MyOU,DC=emslabw3,DC=local"; user.Properties["msExchMailboxFolderSet"].Value...

Creare una MailBox in Exchange

Per creare una mailbox su un account AD tramite .NET è necessario prima di tutto installare l’SDK di Exchange sul proprio computer ed aggiungere la reference ai relativi oggetti COM.   // Definisce il DistinguishedName del MailStore Exchange dove sarà creata la mailbox string mbxDistinguishedName = "CN=Mailbox Store (BASE),CN=First Storage Group,CN=InformationStore,CN=BASE,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=My Community Development Corporation,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=KCDC,DC=org";   // Istanzia l’utente su cui va creata la MailBox DirectoryEntry user = new DirectoryEntry("LDAP://CN=utente,DC=DOMAIN,DC=local");   // Crea la mailbox CDOEXM.IMailboxStore mailbox;   mailbox = (CDOEXM.IMailboxStore) user.NativeObject; mailbox.CreateMailbox(mbxDistinguishedName);   // Memorizza le modifiche user.CommitChanges();   E’ importante ricordare che in realtà questa operazione, non crea realmente la mailbox, ma rende l’utente in AD "MailBox Enabled". La mailbox verrà realmente...

Regular Expression Vs. String manipulation

Tutti conosciamo le potenzialità delle regular expression, ma come si comportano in termini di preformance nel caso si tratti di fare estrazioni piuttosto semplici? In altre parole, quale di queste due soluzioni scegliereste per escludere il dominio da una serie di indirizzi e.mail (es: utente.nome@dominio.it)?   Soluzione 1 for (x = 0; x < fields.Length; x++)       string nome = fields[x].Substring(0, fields[x].IndexOf("@"));   Soluzione 2 Regex myRegEx = new Regex(@"^\w*"); for (x = 0; x < fields.Length; x++)       string nome = myRegEx.Match(fields[x]).Value.ToString();   Entrambe le soluzioni ovviamente raggiungono lo scopo, ma quale delle due risulta ottenere le migliori performance?   Technorati Tags: .NET

Serializzazione e Deserializzazione

Lavorando ad un progetto che utilizza BizTalk mi sono trovato spesso a lavorare con messaggi XML ed ho avuto quindi la necessità di effettuare serializzazione e deserializzazione dei messaggi direttamente in memoria senza passare per file XML. Per quanto riguarda la deserializzazione è abbastanza semplice visto che mi arriva il messaggio già all'interno di un XmlDocument è sufficiente utilizzare il metodo Deserialize della classe XmlSerializer: private MyClass MyClassDeserialize(XmlDocument xmlMyClass) {         XmlSerializer serialize = new XmlSerializer(typeof(MyClass));         XmlNodeReader nr = new XmlNodeReader(xmlMyClass);         return (MyClass)serialize.Deserialize(nr); } Per la serializzazione il discorso è invece un po' più complesso in quanto la serializzazione deve avvenire in memoria così come la...

«ottobre»
domlunmarmergiovensab
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789