用于SSRS和WCF测试的Soap请求的QUERY方法

我正在寻找一个很好的测试工具,用于制作Xml查询请求以及如何将它们与SOAP请求一起使用的知识,这些请求为SSRS返回xml。

我看到有些线程正在测试针对WCF服务的SOAP请求,这些服务推荐了一些产品,有人在codeplex上提到了“WebServiceStudio”: http ://webservicestudio.codeplex.com/。 问题是这个工具似乎无法直接制作’xml request’部分。 我不确定这个语法是否只是降级到SSRS或者是SOAP系列的一部分,所以我真的在寻找从哪里开始的建议,以及认为我只能在商业智能开发工作室中测试似乎有点疯狂,BIDS,本身。

到目前为止所做的一些背景:

  1. 我在.NET 4.5中使用C#中的Entity Framework 5在库项目中创建了一个实体模型,以使其与数据的模型部分保持隔离。
  2. 然后,我在网站WCF项目中创建了一个接口和实现,以使用basicHttpBinding作为其自己的项目来保持它与模型隔离。
  3. 我在Web站点项目中引用了Entity Project并返回了从t4模板生成的类(* .tt =就像我理解的POCO类生成器一样)
  4. 对于测试,我的返回实现如下,两个表返回,其中一个表在签名中有一个参数,一个表函数有两个参数是datetime:

    public List GetStatesTable() { using (SSRSReportsEntities re = new SSRSReportsEntities()) { return re.tblStates.ToList(); } } public List GetStateLike(string state) { using (SSRSReportsEntities re = new SSRSReportsEntities()) { return re.tblStates.Where(n => n.State.Contains(state)).ToList(); } } public List GetMonthlyData(DateTime aStart, DateTime aEnd) { using (SSRSReportsEntities re = new SSRSReportsEntities()) { return re.fMonthly(aStart, aEnd, null).ToList(); } } 
  5. 我将此发布到Windows 7 Enterprise上的IIS 7.5上的本地主机,该应用程序位于名为“Reporting”的默认站点的应用程序中,端点为:

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

  6. 我为客户创建了另一个C#解决方案项目。 我添加了两个服务引用。 一个用于发现服务项目以便即时测试它。 另一个发布的服务。 我检查端点绑定,它们工作正常。

  7. 我在客户端上测试端点,它们都按预期工作于项目的所有三个方法并发布引用。 大。

  8. 我转到BIDS并在步骤5中设置了一个带端点的数据源,用于连接类型XML并将其命名为WCF Datasource

  9. 我想测试三种方法。 当你添加一个参数时,我注意到你需要在放入数据集查询之前先做这个,所以我用最后两个来做。 前两个工作第三个没有:

         http://tempuri.org/IReportingService/GetStatesTable           http://tempuri.org/IReportingService/GetStateLike           http://tempuri.org/IReportingService/GetMonthlyData   

第三个给出了数据类型的错误,它无法实现’4/1/2013’到数据类型System.DataTime。 我需要排除故障但不确定从哪里开始测试。 任何帮助深表感谢。

好的,所以我的答案有点蹩脚,而不是我想要但它的确有效。 我改变了GetMonthly的签名来接受字符串的输入。 然后我将它们转换为方法体内的DateTime。 看来我可以在SSRS中validation合法的DateTime作为参数,只要WCF服务在XML中识别为文本。 因此,合法日期的故障检查是在SSRS上,但字符串将转换为.NET System.DateTime。 我真的不喜欢这个答案,但它确实有效。

 public List 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(); } } 

如果我首先输入参数并将它们映射到Report Project中定义的现有参数,那么这将工作:

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