Massimo Prota's BLog

Nothin' but .NET
posts - 46, comments - 37, trackbacks - 5

My Links

News

View Massimo Prota's profile on LinkedIn Rapid Circle

Archives

Post Categories

Blogs

Links

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) |

Powered by:
Powered By Subtext Powered By ASP.NET