У меня есть отчет 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 - результат будет таким же.
Я нашел несколько сообщений в Интернете, в которых излагалась одна и та же проблема, но, похоже, она не может найти решение и вырывала мои волосы за последние пару часов. Любая помощь будет высоко оценена.