|
lunedì 7 gennaio 2008
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!
|