잘못된 요청 방지Preventing Invalid Requests

응용 프로그램 흐름을 분석하고 보고서 서버로 전송되는 요청이 유효한지 확인하여 일부 유형의 예외가 throw되지 않도록 할 수 있습니다.You can prevent some types of exceptions from being thrown by analyzing your application flow and ensuring that the requests being sent to the report server are valid. 예를 들어 사용자가 보고서의 이름, 데이터 원본 또는 기타 보고서 서버 항목을 추가하거나 갱신할 수 있는 응용 프로그램의 경우 사용자가 입력하는 텍스트의 유효성을 검사해야 합니다.For example, in applications that enable users to add or update the name of a report, data source, or other report server item, you should validate the text that a user might enter. 또한 요청을 보고서 서버로 보내기 전에 항상 예약 문자를 확인해야 합니다.You should always check for reserved characters before sending the request to a report server. 사용 하 여 경우 문 또는 기타 논리 구문을 사용 하도록 보고서 서버에 요청을 보내는 데 필요한 조건을 충족 하지 못한 알리는 코드에서.Use conditional if statements or other logical constructs in your code to alert the user that they have not met the conditions necessary to send requests to the report server.

다음의 간단한 C# 예에서는 사용자가 이름에 슬래시(/) 문자가 포함된 보고서를 만들려고 시도할 때 오류 메시지를 표시합니다.In the following, simplified C# example, users are presented with a friendly error message when they attempt to create a report with a name that contains a forward slash (/) character.

// 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);  
   }  
}  

요청이 보고서 서버로 전송 되기 전에 방지할 수 있는 오류 유형에 대 한 자세한 내용은 참조 하십시오. SoapException 오류 테이블합니다.For more information about the types of errors that can be prevented before requests are sent to the report server, see SoapException Errors Table. Try/catch 블록을 사용 하 여 앞의 예제를 개선 하는 방법에 대 한 자세한 내용은 참조 를 사용 하 여 시도 하 고 Catch 블록합니다.For more information about further enhancing the previous example using try/catch blocks, see Using Try and Catch Blocks.

참고 항목See Also

Reporting Services의 예외 처리 소개 Introducing Exception Handling in Reporting Services
Reporting Services SoapException 클래스Reporting Services SoapException Class