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

本文关键字:Soap 请求 QUERY 方法 测试 SSRS WCF 用于 | 更新日期: 2023-09-27 18:15:49

我正在寻找一个很好的测试工具,用于制作Xml查询请求,并了解如何将它们与为SSRS返回Xml的soap请求一起使用。

我看到一些关于测试WCF服务的SOAP请求的线程推荐了一些产品,有人在codeplex: http://webservicestudio.codeplex.com/上提到了'WebServiceStudio'。问题是,这个工具似乎不工作,使"xml请求"部分直接。我不确定这种语法是否只是被降级到SSRS或SOAP家族的一部分,所以我真的在寻找关于从哪里开始的建议,以及认为我只能在商业智能开发工作室(BIDS)中进行测试似乎有点疯狂。

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

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

    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. 我将此发布到我的本地主机上的IIS 7.5在Windows 7企业在一个应用程序到我的默认站点称为'Reporting',端点是:

    http://(localhost)/报告/ReportingService.svc

  6. 我为客户端创建了另一个项目的c#解决方案。我添加了两个服务引用。一个用于发现服务项目并对其进行动态测试。另一个是发布后的服务。

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

  8. 我进入BIDS并在步骤5中为XML类型的连接设置端点a数据源,并将其称为WCF数据源

  9. 我想测试三个方法。当你添加一个参数时,我注意到你需要在输入数据集查询之前先这样做,所以我对最后两个这样做。前两个可以,第三个不行:

    < 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>
    

第三给数据类型System.DataTime不能实现'4/1/2013'的数据类型错误。我需要排除故障,但我不确定从哪里开始测试。

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

好吧,所以我的答案有点蹩脚,不是我想要的,但它工作。我更改了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();
    }
}

现在可以工作了,只要我先放入参数并将它们映射到报告项目中定义的现有参数:

< 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>