Posts
163
Comments
179
Trackbacks
5
novembre 2008 Blog Posts
Creare Workflow per SharePoint Services 3.0 con Visual Studio 2008


Oggi, da novizio programmatore di Workflow per SharePoint, mi sono imbattuto nel primo “ostacolo”.  Quello che volevo fare era semplicemente creare un workflow di esempio utilizzando Visual Studio 2008 e utilizzando il template apposito che viene messo a disposizione dai Visual Studio Tools for Office.

Niente di più semplice. Si crea il progetto scegliendo l’apposito template (nel mio caso un workflow sequenziale), si creano le attività, si compila e si testa andando in debug (o si rilascia direttamente).

Effettivamente risulta tutto molto semplice, ma se si sta lavorando con WSS 3.0 e non con MOSS 2007, ci sono delle piccole modifiche da fare. Prima di tutto il template fa riferimento all’assembly Microsoft.Office.Workflow.Tasks.dll che è disponibile solo in MOSS. Occorre quindi rimuovere la reference dal progetto.

Fatto questo e provando a fare il deploy (o debug) si ottiene però un altro errore:

Error    3    Feature '0837a41e-b8d2-43f5-87ae-94a35a018530' could not be installed because the loading of event receiver assembly "Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" failed: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.

Anche in questo caso si fa riferimento ad un assembly e ad una caratteristica (feature receiver) presente solo in MOSS. Per rimuovere l’errore occorre editare il file feature.xml ed eliminare dal tag <Feature> i due attributi ReceiverAssembly e ReceiverClass.

A questo punto tutto funziona alla perfezione.

posted @ martedì 18 novembre 2008 15:52 | Feedback (0)
ASP.NET, UpdatePanel e Firefox Caching

In un'applicazione ASP.NET che sto sviluppando e che fa uso di Updatepanel, Ajax e quant'altro, si verificavano strani comportamenti in Firefox (più precisamente su Firefox 3).
Gli strani comportamenti erano dati dal refresh fatto da browser, mentre su IE 6 e 7 il problema non sussisteva.

Indagando un attimo ho scoperto che si tratta di un problema dovuto alla gestione della cache di Firefox. Questo semplice snippet ha risolto i miei problemi:

 

Private Sub _default_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit ' Verifico il browser If Request.Browser.MSDomVersion.Major = 0 Then Response.Cache.SetNoStore() End If End Sub

Ovviamente il controllo sul browser può essere fatto diversamente e in modo più preciso, ma nel mio caso va già bene così com'e'. Comunque l'idea è quella di disabilitare il caching della pagina nel caso in cui il browser corrente non sia IE (o nel caso in cui sia Firefox).

posted @ venerdì 14 novembre 2008 15:43 | Feedback (0)
WSS 3.0, Search Server 2008 Express e gli errori ricorrenti

Come già detto in un post precedente, sto provando WSS 3.0 in accoppiata con Search Server 2008 Express. Tutto funziona correttamente, ma dopo aver eseguito l’upgrade di un’installazione WSS 3.0 funzionante mi sono ritrovato nell’event viewer una serie di errori di questo tipo:

The Execute method of job definition Microsoft.SharePoint.Search.Administration.SPSearc hJobDefinition (ID
82c8c6fa-564f-4d43-877e-b4e549c6410e) threw an exception. More information is
included below.


Retrieving the COM class factory for component with CLSID
{629DA12E-9AD5-4FEC-B886-42C5982C5109} failed due to the following error:  80070422.

Cercando su internet si trovano tantissimi casi simili. Vengono proposte soluzioni varie, riconfigurazione di permessi sul DCOM, etc etc. Nel mio caso però non avevo situazioni strane: tutto installato sulla stessa macchina, uso di un unico account per la configurazione di tutti i servizi, account amministratore di macchina.

Gli errori nel log però continuavano a saltar fuori. Indagando meglio e cercando l’ID della componente sul registro ho notato che è il servizio di ricerca di SharePoint a generare tutti gli errori. Andando a verificare i servizi attivi ho notato che Search Server 2008 Express installa il suo servizio chiamato “Office SharePoint Server Search” (che dovrebbe essere lo stesso di MOSS 2007 se non ricordo male). Il servizio di ricerca di WSS invece si chiama “Windows SharePoint Services Search” e dopo l’installazione di Search Server 2008 viene disabilitato.

Apparentemente tutto corretto, ma andando a verificare i servizi attivi sull’Amministrazione Centrale di SharePoint si nota che è stato anche qui aggiunto il nuovo servizio di ricerca, ma quello vecchio non è stato stoppato. Nella pratica ogni volta che WSS tenta di indicizzare i contenuti con il suo servizio (nel mio caso ogni 5 minuti), parte il job relativo, ma il servizio di Windows è disabilitato e da qui gli errori sull’Event Viewer.

Stoppando il servizio di ricerca di WSS anche su SharePoint tutto torna alla normalità e gli errori spariscono.

posted @ lunedì 3 novembre 2008 22:04 | Feedback (0)
Creare web part Ajax Enabled per SharePoint 2007

Al giorno d’oggi un’applicazione web che si rispetti non può più fare a meno di Ajax. Anche su SharePoint vale la stessa cosa e andando a sviluppare web part è quasi “d'obbligo” utilizzare un qualche framework Ajax. Volendo utilizzare le Ajax Extension di Microsoft e volendo anche utilizzare il nuovo Framework 3.5 è necessario compiere alcuni piccoli passi.
La prima cosa da fare è modificare il web.config di SharePoint affinchè includa tutte le entry necessarie a supportare il Framework .NET 3.5. E’ possibile editare a mano il web.config di SharePoint e riportare tutte le modifiche, ma esiste anche un metodo più rapido descritto in questo post. Qui i punti salienti:

  1. Da Visual Studio 2008 creare un progetto web temporaneo;
  2. Selezionare come target il Framework 2.0;
  3. Copiare il web.config di SharePoint nel nuovo progetto;
  4. Cambiare il target del progetto selezionado il Framework 3.5;
  5. Copiare il web.config modificato nella virtual directory di SharePoint.

Fatto questo il nostro web.config avrà tutto il necessario per supportare LINQ, le Ajax Extensions, e compagnia varia.
A questo punto potremo creare le nostre web part Ajax-Enabled. L’unica accortezza è quella di verificare che nella pagina ci sia sempre uno ScriptManager. Volendo è possibile modificare direttamente la master page, ma in caso di redistribuzione della nostra web part potrebbe essere scomodo.

Possiamo però verificare da codice la presenza dello script manager e nel caso non fosse presente possiamo andare ad aggiungerlo in automatico:

   1: protected override void OnInit(EventArgs e)
   2: {
   3:   base.OnInit(e);
   4:   try
   5:   {
   6:     // Verifico se lo script manager è già presente
   7:     ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
   8:     if (scriptManager == null)
   9:     {
  10:       scriptManager = new ScriptManager();
  11:       scriptManager.ID = "ScriptManager1";
  12:       scriptManager.EnablePartialRendering = true;
  13:       // Aggiungo lo script manager alla pagina
  14:       this.Page.Form.Controls.AddAt(0, scriptManager);
  15:     }
  16:   }
  17:   catch (Exception ex)
  18:   {
  19:     error = ex.ToString();
  20:   }
  21: }

Per finire nel caso ci fossero problemi di postback con gli update panel, questo KB della Microsoft mostra il work-around da utilizzare.
Alla prossima!

posted @ lunedì 3 novembre 2008 11:21 | Feedback (1)
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.

La mia foto

Logo MCAD
Logo MCTS