Massimo Prota's BLog

Nothin' but .NET
posts - 44, comments - 41, trackbacks - 4

giovedì 12 giugno 2008

MOSS e l'arte di parlare per eccezioni [#4]

Anche durante il setup MOSS può presentare sorprese e mostrare errori che poi si scopre non corrispondere esattamente quelli mostrati (che è il leit motiv di questa serie di post).

In questo caso, durante appunto l'operazione di setup di un nuovo MOSS e più precisamente in caso di setup di una farm, può capitare che durante l'aggiunta di un server alla farm tramite lo SharePoint Products and Technologies Configuration Wizard (psconfig) l'operazione fallisca sollevando una SecurityException con un semplice messaggio Access denied, suggerendo di verificare all'interno del log PSCDiagnostics (il Post Setup Configuration log di psconfig appunto) per il dettaglio dell'errore. Guardando dentro questo file non si trova invece nessun dettaglio, anzi non si trova proprio nessun errore, ma solo il logging di vari messaggi di informazione di setup (INF). Guardando invece all'interno dei log del ULS si trova effettivamente un maggiore dettaglio dell'errore e lo stack trace:

The SPPersistedObject, SPServer Name=yourserver Parent=SPFarm Name=SharePoint_Config, could not be updated because the current user is not a Farm Administrator.    

Stack:    at Microsoft.SharePoint.Administration.SPPersistedObject.Update()

Per cui sembrerebbe ovvio verificare l'appartenenza dell'utente con il quale si stanno effettuando le operazioni tra i farm administrators: Central Admin -> Operations -> Update farm administrator's group (o People and Groups della Central Admin application). Eppure ho ricevuto questo stesso errore per due volte in due setup distinti e in entrambi l'utenza apparteneva correttamente al gruppo di amministratori della farm; ciò che ha causato l'errore è stato invece:

  1. Il server che cercava di fare join nella farm non era allineato perfettamente come versione (service pack, hotfix) agli altri server della farm. Verificare quindi la versione dei servers già nella farm da Central Admin -> Operations -> Servers in Farm e del server che deve fare join tramite la chiave registry HKLM\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0. In questo post una lista di version number.
  2. L'utente pur essendo farm administrator non aveva i necessari diritti sul SQL Server. L'utente dovrebbe avere almeno il ruolo di securityadmin e avere i necessari diritti per aggiornare le tabelle dei db di configuration e di central admin.

posted @ giovedì 12 giugno 2008 17.52 | Feedback (0) |

martedì 18 marzo 2008

[SPD Workflows] Manipolazione JS e validazione di custom Collect Data forms

Esiste un bug bello e buono che riguarda la validazione dei campi all'interno dei Tasks generati con la action Collect Data from a User per cui non è possibile gestire correttamente l'input utente o l'obbligatorietà di un campo (sono i casi più frequenti), sia per quanto riguarda i field standard che eventuali custom field. Il supporto non era riuscito a darci una risposta o un workaround per il problema.

Dopo essermi operato un po' e immensamente grazie a questo post di Rob Howard: Using Javascript to Manipulate a List Form Field son riuscito a trovare un workaround per poterlo gestire tramite JS; non è il massimo ma funziona e diciamo che è una buona scialuppa di salvataggio.

Ho postato il tutto a suo tempo sul forum dedicato di MSDN e riporto quindi solo il link al post: Collect data from a User - Validation Bug

Non so se questo bug sia stato fixato con la SP1 di MOSS (non ho ancora avuto modo di lavorarci), ma non l'ho visto menzionato nella lista delle fix e solitamente il supporto lo specifica in risposta al caso quando è così.

posted @ martedì 18 marzo 2008 7.11 | Feedback (0) |

lunedì 10 marzo 2008

SPC 08 - The End

L'ultima mezza giornata è trascorsa in modo molto leggero, con solo un paio di sessioni. La prima in cui è stato spiegato come e cosa il supporto Microsoft utilizza nell'analisi dei problemi, quali informazioni collezionare e fornire; questione che mi interessava avendoci avuto a che fare negli ultimi mesi per dei problemi molto strani verificatisi. Pur essendo una sessione di livello 200 sono state mostrate diverse questioni tecniche e tools, come ad esempio NetMon e WireShark per l'analisi del traffico e dei problemi di rete. Una cosa tanto banale quanto utile, ma a cui non avevo mai pensato è utilizzare Excel per analizzare i dati del ULS per poter più agevolmente filtrare/ordinare i dati piuttosto che analizzarli come flat text files (vista anche la loro grande dimensione solitamente).

L'altra sessione, firmata Ted Pattison, riguardante la 'Security Under the Hood' di MOSS di livello 400, non ha invece parlato di ciò che avevo immaginato dall'abstract, ma è stata comunque precisissima (come quella del giorno prima) e ha trattato principalmente di argomenti di autenticazione; come funziona e come posiziona correttamente la FBA (Form Based Authentication) e varie best practices sulla corretta configurazione di web applications e zone sempre incentrate sull'autenticazione degli utenti intranet/extranet.

Nel pomeriggio abbiamo approfittato della mezza giornata libera e soprattutto del cambio dollaro molto favorevole per fare una spedizione italiana e saccheggiare un moll/outlet fuori città. Ora penso tutti gli altri italiani siano ormai rientrati o stiano rientrando, io mi fermerò qui ancora una settimana per visitare un po' da turista Seattle e qualche città nei dintorni (Redmond ad esempio? Smile), sempre che il mio stomaco mi supporti e mi sposterò poi in Florida per vacanza. Spero di avere finalmente, anzi di non avere nulla da fare e se la noia sarà veramente troppa ne approfitterò per scrivere e pubblicare qualche cosa riguardo a MOSS in sospeso da troppo tempo.

Seattle è molto interessante e meno piovosa di come si era presentata i primi giorni per fortuna; il passaggio all'ora legale già avvenuto oggi qui dovrebbe renderla poi un po' più luminosa e "calda" nel pomeriggio. Qui comunque ti puoi stupire ogni volta che giri l'angolo e non solo perchè le condizioni meteo possono cambiare... In questa città dove leggendo il principale news blog online trovi in prima pagina notizie del tipo:

posted @ lunedì 10 marzo 2008 8.05 | Feedback (2) |

giovedì 6 marzo 2008

SPC 08 Day 3

Per iniziare una sessione sui benefici e le novità correlate a WSS/MOSS con l'introduzione di Windows e SQL Server 2008; una veloce leggera e precisa panoramica condotta ottimamente da Joe Oleson e Bob Fox. Le novità sono davvero tante, ma è la normale evoluzione dei sistemi e l'orchestrazione dei sistemi base che offrono sempre più funzionalità specifiche o utili a un altro prodotto (il che non è comunque sempre scontato in MS...).

Una vera sessione dev 400, di quelle 90% codice duro di Steve Peschka sull'utilizzo di LINQ e AJAX in MOSS, roba da audaci o virtuosi di JS per quanto riguarda AJAX e più o meno cose che si vedono solitamente con LINQ. Poco a che fare in realtà con MOSS, anche le demo infatti per la maggior parte all'interno di windows application (forse per non doversi inventare qualche battuta aspettando i recycle di IIS?). Strano comunque vedere una delle sale più grandi quasi piena per una sessione di questo livello, almeno 400 persone credo, anche se man mano la sala si è andata svuotando e diverse anche le vittime in sala Open-mouthed

Ted Pattison nella sua presentazione dedicata al deploy delle soluzioni con MOSS ha ripetuto diverse cose presentate da Andrew ieri, sulla pacchettizzazione dei componenti e dei vari tool scaricabili per semplificare questo lavoro, spiegandole in modo più approfondito visto il minor numero di argomenti trattati. L'indicazione rimane FEATURES FEATURES FEATURES e solutions.

posted @ giovedì 6 marzo 2008 10.07 | Feedback (0) |

mercoledì 5 marzo 2008

SPC 08 Day 2

Oggi finalmente una ottima sessione che è riuscita a farmi capire che certe limitazioni, certi dubbi non li ho incontrati solo io, ma soprattutto l'errato approccio nello sviluppo e nel deploy di soluzioni WCM/publishing su MOSS non li ho compiuti solo io, ma è il percorso normale che si compie se non si conoscono strade migliori o le si evitano per mancanza di tempo pagandone poi le conseguenze. La sessione è stata presentata da Andrew Connell quindi già il nome dovrebbe bastare a garantire la qualità e ha affrontato appunto il problema di come strutturare lo sviluppo di una soluzione WCM su MOSS preparandosi in modo da evitare orrori, di poter utilizzare Visual Studio e non SharePoint Designer (siamo dev no?) che può voler dire anche SDL e ancor più importante di essere pronti e evitare spiacevoli soprese/tricks al momento di dover fare deploy di quanto realizzato. Per farla molto breve sto parlando di Site Columns, Content Types, Page Layout e Master Pages e ha quindi mostrato come poter realizzare, gestire, pacchettizzare tutto questo con VS; utilizzando mezzo chilo di estensioni e tools tra quelli realizzati da lui e quelli reperibili su CodePlex. Per tutti quelli che realizzano o devono realizzare progetti WCM o sfruttare questi elementi di MOSS combinati alla feature di publishing e vogliono farlo in modo consapevole consiglio assolutamente di scaricare le slides della sessione e seguire il suo blog.

Per il resto niente di particolarmente degno di nota, di prima mattina una sessione su come migrare un workflow realizzato con lo SharePoint Designer all'interno di Visual Studio in cui lo speaker ha mostrato grandi doti di Find&Replace Oriented Programming impiegandoci un'ora a migrare un workflow con una sola standard action e una form di collect. Molti ninja tricks utilissimi se vi doveste trovare in questa situazione, ma il mio consiglio è assolutamente di non andarvici a mettere se ne avete la possibilità!

Tra una sessione e l'altra ho avuto anche modo di certificarmi MCTS MOSS Application Development superando l'esame 70-542 a tempo di record (55 domande in ~60 minuti) perchè pensavo che la sessione di Andrew fosse prima di pranzo. Comunque l'esame è abbastanza tosto, ad esempio tra gli argomenti: BDC (molto), Search Service e customizzazione dei risultati, KPI e Excel Web Services.

posted @ mercoledì 5 marzo 2008 9.07 | Feedback (3) |

martedì 4 marzo 2008

SPC 08 Day 1

Come molti di voi non sapranno mi trovo a Seattle per seguire la SharePoint Conference 2008 che ha avuto inizio oggi. La keynote di apertura di BillG (di cui è possibile vedere la registrazione) non ha portato grandi annunci (no Office 1X, SharePoint 200X), se non quello della nuova possibilità di fruire la piattaforma anche in modalità online. Ha voluto sottolineare la vastità degli ambiti che la piattaforma copre e quanto si stia diffondendo in particolar modo nel mondo enterprise (come dargli torto?); molto sicuro nel rispondere al Q&A su domande anche abbatanza tecniche, ma immagino scelte o filtrate a priori. La seconda keynote invece meno precisa e interessante, ma con qualche effetto Search + Silverlight in particolare per stupire un po' il pubblico. Entrambe hanno visto la partecipazione di Tom Rizzo (PM di Office) che ha egregiamente affiancato BillG e Kurt DelBene mostrando qualche demo.

Precisi e lisci nelle loro sessioni Patrick Tisseghem e Andrew Connell, rispettivamente su integrazione di Silverlight con SharePoint e sull'utilizzo di MOSS per il content management e il publishing; ma come c'era da aspettarsi poco poco codice.

Unica sessione con target dev e di livello 400 della giornata di Arthur Brost sulla personalizzazione delle List Forms e cenni sulla realizzazione di custom fields argomento su cui ho già avuto modo di lavorare per diverso tempo e a cui ero molto interessato. La sessione è stata ben condotta considerando anche l'audience in sala molto vario, ma ho potuto constatare e avere conferma dei limiti della piattaforma per lo sviluppo che sostengo da tempo: solution che compilano una volta sì e una no (senza modifiche), difficoltà a scovare l'errore (principalmente perchè non viene mostrato) e in demo non è bello. In questo la piattaforma non è per niente matura, lo ribadisco ancora una volta, servono dei tool di sviluppo seri.

A parte questo la conferenza è veramente di livello globale, 3800+ partecipanti da ogni angolo del mondo; per me è la prima volta a Seattle e negli USA e sono abbastanza come me l'aspettavo e come da racconti, ma comunque impressionante nel bene e nel male: piove, si mangia tanto e a caso, i tombini fumano e l'acqua dello scarico gira in senso antiorario <g>

posted @ martedì 4 marzo 2008 8.15 | Feedback (2) |

venerdì 11 gennaio 2008

MOSS e l'arte di parlare per eccezioni [#3]

L'errore che riporto questa volta non è una vera e propria eccezione, ma è comunque un messaggio di errore non molto chiaro e abbastanza curioso come descrizione. Ho incontrato questo problema lavorando con la feature di variation, che permette (in due parole) di gestire i "rami" di un sito per la creazione di multilingua/multidevice replicando in automatico le pagine del sito di master variation nei siti localizzati.

Nel momento in cui andiamo a definire la gerarchia, creando una nuova variation label (ovvero una nuova lingua), viene creato in automatico il site che ospiterà i contenuti e su cui agisce il variation job che si occupa della replica.

Purtroppo nell'eseguire questa operazione potrebbe capitare il seguente errore:

An error was encountered performing this operation.

You may re-try the operation, and you may need to clean up the half-created data first before re-trying. If the problem persists, please contact your system administrator

Che tradotto sarebbe: C'è stato un errore, non so dirti che cosa. Se vuoi potresti provare a ritentare, ma siccome non sono transazionale potresti dover eliminare dei dati che ho creato a metà prima di riprovare. Comunque se il problema persiste, come sempre, chiedi al sysadmin

 

Per correggere il problema provate a:

Come sempre buona fortuna e molta attenzione visto che l'installazione dei language packs non è proprio una questione indolore, necessita infatti anche dell'esecuzione dello SharePoint Products and Technologies Configuration Wizard. Backuppate backuppate backuppate

UPDATE:

  • è molto importante verificare prima di compiere queste operazioni che le label e la gerarchia di variation sia stata correttamente creata. Vi rimando a questo post che spiega ottimamente la questione
  • Quel messaggio di errore è un messaggio standard per i "Long running operation job" (la documentazione è praticamente inesistente) che sono un'opportunità esposta molto utile di cui spero di parlare in un post o articolo dedicato.

posted @ venerdì 11 gennaio 2008 18.20 | Feedback (2) |

lunedì 7 gennaio 2008

MOSS e l'arte di parlare per eccezioni [#2]

Continuo la serie degli errori non proprio parlanti di SharePoint 2007 con uno degli errori più frequenti, misteriosi e che mi han fatto perdere più tempo a cercare di capire da chi o cosa era causato.

Modificando e visualizzando una pagina si può incorrere da un momento all'altro in un errore generico causato da qualche modifica alla pagina, ma non è sempre semplice capire perchè questo errore si verifica o come agire risolverlo.

Il messaggio d'errore è un generico "Value does not fall within the expected range", una ArgumentException che sostanzialmente sta a significare: "c'è qualcosa che non va, probabilmente un errore di sintassi, per cui non riesco a validare e caricare la pagina dal DB".

Lo stack trace solitamente è molto simile o uguale a questo sotto riportato e come potete vedere non aiuta molto:

[ArgumentException: Value does not fall within the expected range.]
   Microsoft.SharePoint.Library.SPRequestInternalClass.GetFileAndMetaInfo(String bstrUrl, Byte bPageView, Byte bPageMode, Byte bGetBuildDependencySet, String bstrCurrentFolderUrl, Boolean& pbCanCustomizePages, Boolean& pbCanPersonalizeWebParts, Boolean& pbCanAddDeleteWebParts, Boolean& pbGhostedDocument, Boolean& pbDefaultToPersonal, String& pbstrSiteRoot, Guid& pgSiteId, UInt32& pdwVersion, String& pbstrTimeLastModified, String& pbstrContent, Byte& pVerGhostedSetupPath, UInt32& pdwPartCount, Object& pvarMetaData, Object& pvarMultipleMeetingDoclibRootFolders, String& pbstrRedirectUrl, Boolean& pbObjectIsList, Guid& pgListId, UInt32& pdwItemId, Int64& pllListFlags, Boolean& pbAccessDenied, Guid& pgDocId, Byte& piLevel, UInt64& ppermMask, Object& pvarBuildDependencySet, UInt32& pdwNumBuildDependencies, Object& pvarBuildDependencies, String& pbstrFolderUrl, String& pbstrContentTypeOrder) +0
   Microsoft.SharePoint.Library.SPRequest.GetFileAndMetaInfo(String bstrUrl, Byte bPageView, Byte bPageMode, Byte bGetBuildDependencySet, String bstrCurrentFolderUrl, Boolean& pbCanCustomizePages, Boolean& pbCanPersonalizeWebParts, Boolean& pbCanAddDeleteWebParts, Boolean& pbGhostedDocument, Boolean& pbDefaultToPersonal, String& pbstrSiteRoot, Guid& pgSiteId, UInt32& pdwVersion, String& pbstrTimeLastModified, String& pbstrContent, Byte& pVerGhostedSetupPath, UInt32& pdwPartCount, Object& pvarMetaData, Object& pvarMultipleMeetingDoclibRootFolders, String& pbstrRedirectUrl, Boolean& pbObjectIsList, Guid& pgListId, UInt32& pdwItemId, Int64& pllListFlags, Boolean& pbAccessDenied, Guid& pgDocId, Byte& piLevel, UInt64& ppermMask, Object& pvarBuildDependencySet, UInt32& pdwNumBuildDependencies, Object& pvarBuildDependencies, String& pbstrFolderUrl, String& pbstrContentTypeOrder) +215
   Microsoft.SharePoint.SPWeb.GetWebPartPageContent(Uri pageUrl, PageView requestedView, HttpContext context, Boolean forRender, Boolean includeHidden, Boolean mainFileRequest, Boolean fetchDependencyInformation, Boolean& ghostedPage, Byte& verGhostedPage, String& siteRoot, Guid& siteId, Int64& bytes, Guid& docId, UInt32& docVersion, String& timeLastModified, Byte& level, Object& buildDependencySetData, UInt32& dependencyCount, Object& buildDependencies, SPWebPartCollectionInitialState& initialState, Object& oMultipleMeetingDoclibRootFolders, String& redirectUrl, Boolean& ObjectIsList, Guid& listId) +1533
   Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.FetchWebPartPageInformationForInit(HttpContext context, SPWeb spweb, Boolean mainFileRequest, String path, Boolean impersonate, Boolean& fGhostedPage, Byte& verGhostedPage, Guid& docId, UInt32& docVersion, String& timeLastModified, SPFileLevel& spLevel, String& masterPageUrl, String& customMasterPageUrl, String& webUrl, String& siteUrl, Guid& siteId, Object& buildDependencySetData, SPWebPartCollectionInitialState& initialState, String& siteRoot, String& redirectUrl, Object& oMultipleMeetingDoclibRootFolders, Boolean& objectIsList, Guid& listId, Int64& bytes) +691
   Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.FetchWebPartPageInformation(HttpContext context, String path, Boolean impersonate, Boolean& fGhostedPage, Byte& verGhostedPage, Guid& docId, UInt32& docVersion, String& timeLastModified, SPFileLevel& level, String& masterpageUrl, String& customMasterPageUrl, String& webUrl, String& siteUrl, Guid& siteId, Object& buildDependencySetData) +132
   Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.GetWebPartPageData(HttpContext context, String path, Boolean throwIfFileNotFound) +773
   Microsoft.SharePoint.ApplicationRuntime.SPVirtualFile.GetFile(String virtualPath, Boolean fetchContent) +78
   Microsoft.SharePoint.ApplicationRuntime.SPVirtualFile.GetFile(String virtualPath) +30
   Microsoft.SharePoint.ApplicationRuntime.SPVirtualPathProvider.GetFile(String virtualPath) +171
   System.Web.Hosting.VirtualPathProvider.GetFile(String virtualPath) +18
   System.Web.Hosting.VirtualPathProvider.GetFileWithCheck(String virtualPath) +11
   System.Web.FormatterWithFileInfo.GetSourceFileLines(String fileName, Encoding encoding, String sourceCode, Int32 lineNumber) +229
   System.Web.DynamicCompileErrorFormatter.get_MiscSectionContent() +926
   System.Web.ErrorFormatter.GetHtmlErrorMessage(Boolean dontShowSensitiveInfo) +837
   System.Web.HttpResponse.WriteErrorMessage(Exception e, Boolean dontShowSensitiveErrors) +820
   System.Web.HttpResponse.ReportRuntimeError(Exception e, Boolean canThrow, Boolean localExecute) +560
   System.Web.HttpRuntime.FinishRequest(HttpWorkerRequest wr, HttpContext context, Exception e) +333

 

Elenco di seguito un po' di note su cosa e come cercare di risolvere l'errore in base a quello che l'esperienza mi ha insegnato:

  • La pagina che state cercando di visualizzare ha un errore di compilazione o di parsing
    • controllate la direttiva di pagina, potrebbe mancare un Language="C#"
    • sempre nella direttiva di pagina verificate che la classe da cui si eredita (Inherits="...") sia specificata con la sua full identity ("<classname>, <assembly>, <version>, <culture>, <publickeytoken>")
    • manca o è sbagliato un tag <%@ Reference ... %> o <%@ Assembly ... %> per un controllo utilizzato nella pagina
    • manca o è sbagliata una direttiva <%@ Import ... %>
  • Se la vostra pagina utilizza un controllo non standard potrebbe essere quello a mandare in errore la pagina, ma in questo caso lo stack trace dovrebbe riportare anche qualche riferimento al controllo e al metodo in cui è avvenuto errore
  • Valgono poi tutti i metodi di risoluzione standard che solitamente si applicano a un errore:
    • un bel resettone
    • N refresh
    • eliminare e fare nuovamente upload della pagina
    • procedendo per sottrazione eliminare i componenti all'interno della pagina e tutti i pattern Commando che avete ultimamente inserito

Buona fortuna

UPDATE 03/09/2008: è stato pubblicato un articolo di KB che descrive il problema e propone anche soluzioni e codice per risolverlo!

953445: Error message when you edit an .aspx Web page in SharePoint Server 2007: "Value does not fall within the expected range"

posted @ lunedì 7 gennaio 2008 15.49 | Feedback (0) |

lunedì 17 dicembre 2007

MOSS e l'arte di parlare per eccezioni

Una delle cose che meno mi piace di MOSS e che dimostra il livello maturità del prodotto secondo me è la sua caratteristica di avere veramente , molto più spesso invece ci restituisce una exception

(sempre a patto di aver abilitato la visualizzazione del callstack, altrimenti un più generico "An unexpected error has occurred" )

Anche avendo il dump dell'eccezione non sempre però si riesce facilmente a capire il problema, o capita ance che il messaggio invece non c'entri nulla con quello che sta succedendo ;(
Se ad esempio il vostro dba o sysadmin non ha fatto tanto bene i compiti a casa e il truncate dei log del db non ha proprio ancora capito a che serva e come si faccia Devil allora può capitare che il disco si saturi e WSS/MOSS ogni 2 click su 3 risponda:

Error - Unable to complete this operation. Please contact your administrator.

o ancora meglio

Error - Exception from HRESULT: 0x80040E14

In questo post: SharePoint Errors when you're SQL Server runs out of disk space potete trovare anche gli screenshot degli errori

posted @ lunedì 17 dicembre 2007 1.51 | Feedback (0) |

lunedì 26 novembre 2007

[MOSS] Cambiare la master page utilizzata da un page layout

Lavorando con la feature di publishing in MOSS si può incorrere in una limitazione: un page layout utilizza sempre la master page definita a livello di root site e non è possibile modificare questo comportamento specificando l'attributo MasterPageFile nella direttiva di pagina perché questo viene semplicemente ignorato. Questa può essere una grossa limitazione in caso di numerosi siti figli che condividono lo stesso root site come ad esempio siti multilingua su cui agisce variation.

Per aggirare questo menefreghismo della piattaforma è necessario ridefinire la pagina padre del nostro page layout, da PublishingLayoutPage a una pagina custom che eredita da questa, contenente il seguente codice nel metodo OnPreInit

    public class CustomMasterLayoutPage : PublishingLayoutPage
    {
        protected override void OnPreInit(EventArgs e)
        {
            string userDefinedMasterPage = this.MasterPageFile;
 
            base.OnPreInit(e);
 
            if (!string.IsNullOrEmpty(userDefinedMasterPage))
                this.MasterPageFile = userDefinedMasterPage;
        }
    }


A questo punto bisogna dopo le solite operazioni da MOSS (compilare in una DLL, inserirla in GAC, autorizzarla come SafeControl nel web.config) possiamo sostituire all'interno del nostro page layout la classe base da Microsoft.SharePoint.Publishing.PublishingLayoutPage con la full identity della custom page creata e la valorizzazione di MasterPageFile da direttiva di pagina finalmente funzionerà correttamente.

Una soluzione semplice tanto da far perdere una mezz'ora e un paio di capelli.

posted @ lunedì 26 novembre 2007 19.45 | Feedback (0) |

Powered by: