3

我正在寻找一个很好的测试工具来发出 Xml 查询请求以及如何将它们与返回 SSRS 的 xml 的肥皂请求一起使用的知识。

我看到一些关于测试 WCF 服务的 SOAP 请求的线程,这些线程推荐了一些产品,有人在 codeplex 上提到了“WebServiceStudio”:http ://webservicestudio.codeplex.com/ 。问题是这个工具似乎不适用于直接制作“xml 请求”部分。我不确定这种语法是否只是降级为 SSRS 还是属于 SOAP 家族的一部分,所以我真的在寻找关于从哪里开始的建议,而且认为我只能在 Business Intelligence Development Studio 中进行测试似乎有点疯狂, 投标, 本身。

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

  1. 我在一个库项目中使用 C# 中的 Entity Framework 5 在 .NET 4.5 中创建了一个实体模型,以使其与数据的模型部分保持隔离。
  2. 然后,我在网站 WCF 项目中创建了一个接口和实现,以使用 basicHttpBinding 作为其自己的项目来托管,以使其与模型隔离。
  3. 我在网站项目中引用了实体项目并返回从 t​​4 模板生成的类(* .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 7 Enterprise 上的 IIS 7.5 上的本地主机上的应用程序下到我的默认站点“报告”,端点是:

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

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

  7. 我在客户端上测试了端点,它们都按预期对项目中的所有三种方法工作并发布参考。伟大的。

  8. 我去 BIDS 并在步骤 5 中设置带有端点的数据源以连接 XML 类型并将其称为 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>
    

第三个给出关于数据类型的错误,它无法将“2013 年 4 月 1 日”实现为数据类型 System.DataTime。我需要排除故障,但不确定从哪里开始测试。任何帮助深表感谢。

4

1 回答 1

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

现在这将起作用,前提是我先输入参数并将它们映射到报告项目中定义的现有参数:

< 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>
于 2013-05-29T15:59:17.943 回答