SAP Knowledge Base Article - Public

1349603 - Refreshing an Xcelsius 2008 SWF from an ASP.NET Web Service

Symptom

After a web service is created from ASP.NET and imports successfully into Xcelsius 2008, the following behavior occurs:

  • Refreshing the published SWF does not return any data to the linked cells
  • Error: "2032" when previewing the dashboard in Xcelsius
  • An HTTP trace shows the following 500 Internal Server Error: "System.InvalidOperationException: Input message does not conform to Simple SOAP Binding Profile Version 1.0. Requirement R1012: A MESSAGE MUST serialize the envelope using either UTF-8 or UTF-16 character encoding."

Reproducing the Issue

Environment:

  • Xcelsius 2008 SP1
  • Visual Basic 2005 ASP.NET
  • Windows XP
  1. Create a web service in ASP.NET in Visual Basic
  2. Import the WSDL into Xcelsius 2008
  3. Link the data elements of the web service body to the excel sheet
  4. Display the data using a spreadsheet table component on the canvas
  5. Configure a refresh trigger button on the canvas
  6. Preview the dashboard

Cause

Custom web services must conform to Xcelsius in order for the data connector to properly interpret or invoke the web service.  A WSDL containing syntax that is not supported will cause issues when attempting to refresh in the SWF in runtime.  VB ASP.NET will automatically generate a .NET default param value, "ConformsTo:=WsiProfiles.BasicProfile1_1", which will not conform with Xcelsius' data connector.

Resolution

Remove the auto generated param value, "conformsTo:=WsiProfiles.BasicProfile1_1" as in:

<Webservicebinding (ConformsTo:=WsiProfiles.BasicProfile1_1,...) ...> at the top of code, behind the VB file of the web service.

A sample of the complete VB ASP.NET listing that provides data to Xcelsius is listed here:

Imports System.Web                                                                                                                  
Imports System.Web.Services                                                                                                         
Imports System.Web.Services.Protocols

<WebService(Name:="Xcel_wstest",                                                                                                    
[Namespace]:="http://youriporurl/Xcel_wstest/")> _                                                                                  
<WebServiceBinding(Name:="Xcel_wstest",                                                                                             
[Namespace]:="http://youriporurl/Xcel_wstest/")> _                                                                                  
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _                                                               
Public Class Service1                                                                                                               
Inherits System.Web.Services.WebService                                                                                            
                                                                                                                                   
Inherits System.Web.Services.WebService                                                                                            
Public Structure ProductDetail                                                                                                     
Public id As String                                                                                                                
Public name As String                                                                                                              
Public price As String                                                                                                             
End Structure                                                                                                                      
                                                                                                                                   
<SoapDocumentMethod(Binding:="Xcel_wstest"), WebMethod()> _                                                                        
Public Function GetProducts() As ProductDetail()                                                                                   
Dim dp(1) As ProductDetail                                                                                                         
dp(0).id = "P1000"                                                                                                                 
dp(0).name = "sewing machine"                                                                                                      
dp(0).price = "25"                                                                                                                 
dp(1).id = "P1001"                                                                                                                 
dp(1).name = "sewing machine chair"                                                                                                
dp(1).price = "10"                                                                                                                 
Return dp                                                                                                                          
End Function                                                                                                                       
                                                                                                                                   
End Class                                             

Keywords

Xcelsius Engage, Engage Server, Xcelsius Enterprise, WSDL , KBA , BI-RA-XL , Dashboards and Presentation Design , Problem

Product

SAP BusinessObjects Xcelsius Enterprise 2008