Partager via


Empêcher les demandes non valides

Vous pouvez éviter que certains types d'exceptions soient levés en analysant le flux de votre application et en veillant à ce que les demandes qui sont envoyées au serveur de rapports soient valides. Par exemple, vous pouvez avoir des applications qui permettent aux utilisateurs d’ajouter ou de mettre à jour le nom d’un rapport, d’une source de données ou d’un autre élément de serveur de rapports. Si c’est le cas, vous devez valider le texte qu’un utilisateur peut entrer. Vous devez toujours vérifier que la demande ne contient pas de caractères réservés avant de l'envoyer à un serveur de rapports. Utilisez des instructions conditionnelles si des instructions ou d’autres constructions logiques dans votre code permettent d’avertir l’utilisateur qu’il n’a pas rempli les conditions nécessaires pour envoyer des demandes au serveur de rapports.

Dans l'exemple C# simplifié suivant, un message d'erreur convivial s'affiche lorsque les utilisateurs essaient de créer un rapport dont le nom contient une barre oblique (/).

// C#  
private void PublishReport()  
{  
   int index;  
   string reservedChar;  
   string message;  
  
   // Check the text value of the name text box for "/",  
   // a reserved character  
   index = nameTextBox.Text.IndexOf(@"/");  
  
   if ( index != -1) // The text contains the character  
   {  
      reservedChar = nameTextBox.Text.Substring(index, 1);  
      // Build a user-friendly error message  
      message = "The name of the report cannot contain the reserved character " +  
         "\"" + reservedChar + "\". " +  
         "Please enter a valid name for the report. " +  
         "For more information about reserved characters, " +  
         "see the help documentation";  
  
      MessageBox.Show(message, "Invalid Input Error");  
   }  
   else // Publish the report  
   {  
      Byte[] definition = null;  
      Warning[] warnings = {};  
      string name = nameTextBox.Text;  
  
      FileStream stream = File.OpenRead("MyReport.rdl");  
      definition = new Byte[stream.Length];  
      stream.Read(definition, 0, (int) stream.Length);  
      stream.Close();  
      // Create report with user-defined name  
      rs.CreateCatalogItem("Report", name, "/Samples", false, definition, null, out warnings);  
      MessageBox.Show("Report: {0} created successfully", name);  
   }  
}  

Pour plus d’informations sur les types d’erreurs qui peuvent être évités avant l’envoi des requêtes au serveur de rapports, consultez la table Erreurs SoapException. Pour plus d’informations sur l’amélioration de l’exemple précédent à l’aide de blocs try/catch, consultez Utiliser les blocs try et catch.

Présentation de la gestion des exceptions dans Reporting Services
Classe SoapException De Reporting Services