2013-05-28 20 views
2

我正在尋找一個好的測試工具來製作Xml查詢請求,並瞭解如何將這些請求用於返回xml的SSRS請求。Soap請求SSRS和WCF測試的QUERY方法

我看到一些關於測試SOAP請求的WCF服務的一些線程,這些服務推薦了一些產品和某人在codeplex上提到'WebServiceStudio':http://webservicestudio.codeplex.com/。問題在於這個工具似乎不能直接製作'xml request'部分。我不確定這個語法是否僅僅是SSRS的一部分,或者是SOAP家族的一部分,所以我真的在尋找關於從哪裏開始的建議,以及認爲我只能在商業智能開發工作室中測試似乎很瘋狂,BIDS,本身。

什麼迄今已做了一些背景:

  1. 我創建了.NET 4.5的實體模型中使用實體框架5中C#庫項目以保持隔離的模型部分數據。
  2. 然後,我在網站WCF項目中創建了一個接口和實現,使用basicHttpBinding作爲其自己的項目來保持它與模型的隔離。
  3. 我引用的實體項目從T4模板生成的網站項目和回報類(*。TT =就像從我的理解一個POCO類生成器)是
  4. 我回報的實施測試如下,兩條表返回一個與簽名的參數,並用兩個參數是日期時間的表功能:

    public List<tblState> GetStatesTable() 
    { 
        using (SSRSReportsEntities re = new SSRSReportsEntities()) 
        { 
         return re.tblStates.ToList(); 
        } 
    } 
    
    public List<tblState> GetStateLike(string state) 
    { 
        using (SSRSReportsEntities re = new SSRSReportsEntities()) 
        { 
         return re.tblStates.Where(n => n.State.Contains(state)).ToList(); 
        } 
    } 
    
    public List<fMonthly_Result> GetMonthlyData(DateTime aStart, DateTime aEnd) 
    { 
        using (SSRSReportsEntities re = new SSRSReportsEntities()) 
        { 
         return re.fMonthly(aStart, aEnd, null).ToList(); 
        } 
    } 
    
  5. 我在Windows上發佈此我的本地主機上的IIS 7.5的應用程序在7企業我默認網站名爲「報告」,終點是:

    http://(localhost)/Reporting/ReportingService.svc

  6. 我爲客戶端的C#解決方案創建了另一個項目。我添加兩個服務引用。一個用於發現服務項目以便即時測試的服務項目。另一個服務曾經發布。我檢查端點綁定,他們工作正常。

  7. 我測試客戶端上的端點,它們都按照項目上所有三種方法的預期方式工作併發布引用。大。

  8. 我去BIDS並建立與端點的數據源在步驟5 XML類型的連接,並把它稱爲WCF數據源

  9. 我想測試的三種方法。當你添加一個參數時,我注意到你需要在你輸入數據集查詢之前先做這個,所以我用最後兩個參數來做。前兩個工作第三不:有關數據類型,它無法實現「2013年4月1日」爲數據類型System.DataTime

    < Query> 
    < Method Name="GetStatesTable" Namespace="http://tempuri.org/"> 
    < /Method> 
    < SoapAction> 
    http://tempuri.org/IReportingService/GetStatesTable 
    </SoapAction> 
    </Query> 
    
    < Query> 
    < Method Name="GetStateLike" Namespace="http://tempuri.org/"> 
    < Parameters> 
    <Parameter Name="state"> 
    </Parameter> 
    </Parameters> 
    </Method> 
    < SoapAction> 
    http://tempuri.org/IReportingService/GetStateLike 
    </SoapAction> 
    </Query> 
    
    < Query> 
    < Method Name="GetMonthlyData" Namespace="http://tempuri.org/"> 
    < Parameters> 
    < Parameter Name="aStart"></Parameter> 
    < Parameter Name="aEnd"></Parameter> 
    </Parameters> 
    </Method> 
    < SoapAction> 
    http://tempuri.org/IReportingService/GetMonthlyData 
    </SoapAction> 
    </Query> 
    

三給出了錯誤。我需要排除故障,但不知道從哪裏開始測試。任何幫助深表感謝。

回答

1

好吧,所以我的回答是有點跛腳,而不是我想要的,但它的工作原理。我改變了GetMonthly的簽名來接受字符串輸入。然後我將它們轉換爲方法體內的DateTime。看來我可以在SSRS中驗證一個合法的DateTime作爲一個參數,只要WCF服務在XML中識別的是文本。因此,錯誤檢查合法日期在SSRS上,但字符串將轉換爲.NET System.DateTime。我真的不喜歡這個答案,但它的工作原理。

public List<fMonthly_Result> GetMonthlyData2(string aStart, string aEnd) 
{ 
    using (SSRSReportsEntities re = new SSRSReportsEntities()) 
    { 
     DateTime dstart = DateTime.Parse(aStart); 
     DateTime dend = DateTime.Parse(aEnd); 

     return re.fMonthly(dstart, dend, null).ToList(); 
    } 
} 

Nowthis會的工作,提供了我放在第一個參數,並將它們映射到報表項目定義的現有參數:

< Query> 
< Method Name="GetMonthlyData" Namespace="http://tempuri.org/"> 
< Parameters> 
< Parameter Name="aStart"></Parameter> 
< Parameter Name="aEnd"></Parameter> 
</Parameters> 
</Method> 
< SoapAction> 
http://tempuri.org/IReportingService/GetMonthlyData 
</SoapAction> 
</Query>