2010-08-05 11 views
23

Ich habe einen SSRS 2005-Bericht, den ich einen Webservice verwenden möchte, um einige Daten abzurufen. Dieser Webservice nimmt mehrere Parameter auf.SSRS 2005 - XML-Webservice-Datensatz - Parameter, die nicht an Webservice übergeben werden

Als Test habe ich eine sehr einfache Demo-Webservice-Projekt auf meinem lokalen Umgebung einzurichten:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class Service : System.Web.Services.WebService 
{ 
    public Service() {} 

    [WebMethod] 
    public int DivideByTwo(int numberIn) { 
     return numberIn/2; 
    } 
} 

Bericht dann Mein Test hat einen Datensatz eine XML-Datenquelle, mit der (localhost) URL des Webservice mit in die Verbindungszeichenfolge

In der Query-String des Datensatzes ich folgendes haben, auf Basis von MS-Dokumentation (http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx):

<Query> 
    <SoapAction>http://tempuri.org/DivideByTwo</SoapAction> 
    <Method Namespace="http://tempuri.org/" Name="DivideByTwo" /> 
    <Parameters> 
     <Parameter Name="NumberIn"> 
      <DefaultValue>100</DefaultValue> 
     </Parameter> 
    </Parameters> 
    <ElementPath IgnoreNamespaces="True">*</ElementPath> 
</Query> 

Das Problem, das ich habe, ist, dass trotz der webservice ausgelöst wird, ist der Parameter nicht wird an den Webservice übergeben und folglich ist der Rückgabewert immer 0. Ich habe den Webservice debugged und einen Breakpoint in der DivideByTwo() -Methode platziert, und wenn der Webservice-Aufruf aus dem Report ausgelöst wird und der Breakpoint getroffen wird, der numberIn-Wert ist immer 0, unabhängig davon, was ich in das Element der Query-XML stelle.

Ich habe auch versucht, den Parameter "NumberIn" auf der Registerkarte "Parameters" des Dialogfelds Dataset (mit einem angegebenen Wert) und das Element aus der Abfrage XML zu entfernen - das Ergebnis ist das gleiche.

Ich habe einige Artikel im Internet gefunden, die das gleiche Problem aufzeigen, aber ich kann keine Lösung finden und habe mir in den letzten Stunden die Haare ausgerissen. Jede Hilfe würde sehr geschätzt werden.

+4

Sie haben einen kleinen Tippfehler. Da die Parameter die Groß-/Kleinschreibung beachten, sollte Ihre Abfrage sein. Ich habe ein ähnliches Problem mit den Parametern, die nicht mit allen Fällen richtig übergeben werden..so nicht sicher, dass es das Problem ist, aber einen Versuch wert. – DavveK

+2

Danke DaweK.Ich habe das schon vor einiger Zeit gefragt, aber ich vermute, dass dies das Problem war, da das Problem nach einer Weile einfach wegzugehen schien und ich nicht identifizieren konnte, was ich getan hatte, um das Problem zu beheben. – Michael

Antwort

1

Wie DavveK erwähnt, sieht es aus wie ein einfacher Tippfehler mit der Großschreibung Ihres Parameters.

Ihre Service-Definition sucht:

numberIn 

, während die XML-Datensatz liefert:

NumberIn 

Wie der Artikel, den Sie erwähnt verwiesen, Paramater sind case-sensitive. Siehe # 8 unter http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx

0

Dies kann aus zwei Gründen passieren.

1) Parameternamen stimmen nicht genau überein. Beachten Sie, dass bei Parameternamen die Groß-/Kleinschreibung beachtet wird.

2) Der Namespace ist nicht korrekt zugeordnet. Beachten Sie, dass wenn Sie Namespace als "http://tempuri.org/" angeben, stellen Sie sicher, dass der nachfolgende Schrägstrich in Ihrer Webservice-Definition ist. Z.B.

[WebService(Namespace = "http://tempuri.org/")] 
public class ReportService : System.Web.Services.WebService 
{ 

} 

Wenn eine dieser beiden Bedingungen nicht korrekt angegeben, wird Ihre Web-Service-Methode noch die Parameter aufgerufen werden (wie Datatime, int) werden alle Standardwerte haben.

Verwandte Themen