1

我需要查詢在Reporting Services中傳遞複雜參數作爲輸入的web服務。 我該怎麼做?報告服務,如何查詢具有複雜類型參數的web服務作爲輸入

。在Visual Studio的查詢設計器,我做了這樣的查詢:

<Query> 
<SoapAction>http://mywebservice.com/Customers/GetCustomers</SoapAction> 
<Method Name="GetCustomers" Namespace="http://mywebservice.com/Customers/"> 
<Parameters> 
<Parameter Name="myParams" type="xml"> 
    <DefaultValue> 
     <myParams> 
      <IdCustomer>0</IdCustomer> 
     </myParams> 
    </DefaultValue> 
</Parameter> 
</Parameters> 
</Method> 
<ElementPath IgnoreNamespaces="true">*</ElementPath> 
</Query> 

WebService的期望它作爲參數:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <GetCustomer xmlns="http://mywebservice.com/Customers/"> 
     <myParams> 
     <IdCustomer>int</IdCustomer> 
     <IdCustomer>int</IdCustomer> 
     </myParams> 
    </GetCustomer> 
    </soap:Body> 
</soap:Envelope> 

當我嘗試在Visual Studio 2008中,我獲取此錯誤消息:

無法對指定的URL執行Web請求。肥皂故障: System.Web.Services.Protocols.SoapException:服務器無法處理請求。 --- > System.NullReferenceException:未將對象引用設置爲對象的實例。

回答

0

您應該看看在測試客戶端中發送的xml,以獲得查詢所需語法的示例。我建議使用Visual Studio附帶的wcftestclient。運行測試後,可以在XML選項卡(位於wcftestclient的屏幕底部)中查看xml,並將查詢的<DefaultValue>部分中的內容替換爲相應的參數值。

該web服務的查詢應該如下所示。注意一個命名空間將被取決於你自己的情況:

<Query> 
    <SoapAction>http://mywebservice.com/Customers/GetCustomers</SoapAction> 
    <Method Name="GetCustomer" Namespace="http://mywebservice.com/Customers/"> 
    <Parameters> 
     <Parameter Name="myParams" type="xml"> 
     <DefaultValue xmlns:a="http://schemas.datacontract.org/2004/07/MyWebServices"> 
      <a:IdCustomer>0</a:IdCustomer> 
      <a:IdCustomer>1</a:IdCustomer> 
     </DefaultValue> 
     </Parameter> 
    </Parameters> 
    </Method> 
</Query> 

另外,我看到你有<參數類型=「XML」>。對我而言,我花了數小時的時間處理類似的查詢,並且錯過了type =「xml」。該屬性在MSDN上似乎沒有很好的記錄。