SSRS 2005 - набор данных веб-сервиса XML - параметры не передаются веб-сервису - PullRequest
23 голосов
/ 05 августа 2010

У меня есть отчет SSRS 2005, который я хотел бы использовать веб-сервис для получения некоторых данных. Этот веб-сервис будет принимать несколько параметров.

В качестве теста я настроил очень простой демонстрационный проект веб-сервиса в своей локальной среде:

[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;
    }   
}

В моем отчете о тестировании содержится набор данных с использованием источника данных XML с URL-адресом (localhost) веб-службы в строке подключения.

В строке запроса набора данных у меня есть следующее, основанное на документации MS (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>

Проблема, с которой я столкнулся, заключается в том, что, несмотря на то, что веб-сервис запускается, параметр не передается в веб-сервис, и, следовательно, возвращаемое значение всегда равно 0. Я отладил веб-сервис и поместил точку останова в DivideByTwo ), и когда вызов веб-службы запускается из отчета и достигается точка останова, значение numberIn всегда равно 0 независимо от того, что я помещаю в элемент XML-запроса.

Я также попытался указать параметр «NumberIn» на вкладке «Параметры» диалогового окна «Набор данных» (с указанным значением) и удалить элемент из XML-запроса - результат тот же.

Я нашел в сети несколько постов, описывающих ту же проблему, но, похоже, не могу найти решения, и последние несколько часов рвал на себе волосы. Любая помощь будет высоко ценится.

Ответы [ 2 ]

1 голос
/ 03 октября 2012

Как упомянул DavveK, похоже, что это простая опечатка с заглавными буквами вашего параметра.

Ваше определение сервиса ищет:

numberIn

, в то время как ваш набор данных XML предоставляет:

NumberIn

Как упоминается в статье, на которую вы ссылаетесь, параметры учитывают регистр.Смотрите # 8 на http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx

0 голосов
/ 30 октября 2013

Это может произойти по двум причинам.

1) Имена параметров не совсем совпадают. Обратите внимание, что имена параметров чувствительны к регистру .

2) Пространство имен не соответствует. Обратите внимание, что если вы указали пространство имен как "http://tempuri.org/" , убедитесь, что в вашем определении веб-сервиса . Например,

убедитесь, что в конце веб-службы есть символ косой черты.
[WebService(Namespace = "http://tempuri.org/")]
public class ReportService : System.Web.Services.WebService
{

}

Если какое-либо из этих двух условий задано неправильно, будет вызван метод веб-службы, но все параметры (например, datatime, int) будут иметь значения по умолчанию.

...