J'utilise le contrôle XmlFormView sur une page aspx personnalisée hébergée sur un site SharePoint. Récemment, notre SharePoint a été mis à niveau vers 2010 et après j'ai eu des problèmes avec la validation de formulaire déclenchée par le XmlForm.Submit().XmlForm.Submit() "masque" le message de résultat de la validation?
La page personnalisée repose en fait sur l'exception levée par SharePoint si la validation du formulaire soumis échoue. Le message de validation est formaté et montré à l'utilisateur de manière amicale.
Lorsqu'un formulaire contenant des données non valides fournies par l'utilisateur est envoyé, une "Microsoft.Office.InfoPath.Server.Util.InfoPathFatalException" est renvoyée. Cette exception ne contient pas d'informations sur les champs witch contenant des données invalides. En fait, je m'attendais à une "Microsoft.Office.InfoPath.Server.SolutionLifetime.DataAdapterException". (La soumettons est réussie et aucune exception est levée si la forme ne contient pas d'erreurs de validation)
Si je décochez la case « Activer juste mon code (Managed uniquement) » dans Visual Studio et déboguer le formulaire soumettre, je reçois le exception suivante (contient les textes danois):
Microsoft.Office.InfoPath.Server.SolutionLifetime.DataAdapterException a eu lieu
message = Formularen kan ikke afsendes, den fordi indeholder valideringsfejl. Fejlene er angivet med en rød stjerne (obligatoriske felter) eller omgivet af en rød, stiplet streg (ugyldige værdier).
feutre eller Gruppe: MunicipalRealPropertyIdentifier
Fejl: Der må kun angives et bestemt mønster
Source = Microsoft.Office.InfoPath.Server
BypassWatson = true
LogId = 5567
SaveUserSession = false
UserMessage = Formulaire créé par l'utilisateur, fordi den indeholder validingsfejl. Fejlene er angivet med en rød stjerne (obligatoriske felter) eller omgivet af en rød, stiplet streg (ugyldige værdier).
feutre eller gruppe: MunicipalRealPropertyIdentifier
Fejl: Der må kun angives et bestemt mønster
OverrideTopLevelMessage = true
StackTrace:
à
Microsoft.Office.InfoPath.Server.SolutionLifetime.DatabaseHelper.CheckErrorBoard (Document document, adaptateur DataAdapter, XPathNavigator subtreeToCheck, Boolean schemaErrorOnly)
InnerException:
C'est bon! L'exception contient des informations sur les erreurs de validation. I Continuez le débogage. L'exception désiré est ré-émise et la sortie se lit comme suit:
étape en: Enjambant procédé sans symboles de la Microsoft.Office.InfoPath.Server.SolutionLifetime.DatabaseHelper.CheckErrorBoard ' étape en: Faire un pas sur la méthode sans symboles 'Microsoft.Office.InfoPath.Server.DocumentLifetime.Document.ExecuteDefaultSubmitAction'
Ceci est encore bon!Je continue le débogage, mais maintenant l'exception d'origine est perdue et l'InfoPathFatalException est renvoyée.
Microsoft.Office.InfoPath.Server.Util.InfoPathFatalException a eu lieu
Message = exception de type 'Microsoft.Office.InfoPath.Server.Util.InfoPathFatalException' a été jeté.
Source = Microsoft.Office.InfoPath.Server
BypassWatson = false
SaveUserSession = false
UserMessage = Der opstod en alvorlig fejl sous formularen de behandlingen af.
StackTrace:
à Microsoft.Office.InfoPath.Server.Util.GlobalStorage.get_CurrentFormId()
InnerException:
La sortie VS lit maintenant:
dans l'étape: Enjambant méthode sans symboles 'Microsoft.Office.InfoPath.Server.SolutionLifetime.DatabaseHelper.CheckErrorBoard' Entrez dans: Méthode de passage sans symboles 'Microsoft.Office.InfoPath.Server.DocumentLifetime.Document.ExecuteDefaultSubmitAction' étape dans: Enjambant méthode sans symboles de Microsoft.Office.InfoPath.Server.DocumentLifetime.OMExceptionManager.ExecuteOMCallWithExceptions '
Je suis tout à fait un novice en matière de SharePoint, mais je pense que ça sent un peu comme un problème de sécurité? Il semble que l'exception d'origine ne soit pas "autorisée" à renvoyer un message à l'appelant.
J'ai essayé d'activer la journalisation complète dans SharePoint, mais lorsque je regarde les journaux dans ".. \ Program Files \ Fichiers communs \ Microsoft Shared \ Extensions serveur Web \ 14 \ LOGS", je ne vois que le " original "exception, pas pourquoi il est écrasé?
Informations complémentaires: Le site fonctionne actuellement avec le paramètre de configuration:
<trust level="Full" originUrl="" />
Tout le monde a des idées sur cette question?
Sur SharePoint 2007, l'exception souhaitée est renvoyée à l'appelant.