gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:53:49 25 4
gpt4 key购买 nike

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

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

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

  1. 我在一个库项目中使用 C# 中的 Entity Framework 5 在 .NET 4.5 中创建了一个实体模型,以使其与数据的模型部分保持隔离。
  2. 然后,我在一个网站 WCF 项目中创建了一个接口(interface)和实现,以使用 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 7 Enterprise 上 IIS 7.5 上的本地主机,这是在我的名为“报告”的默认站点的应用程序下,端点是:

    http://(本地主机)/Reporting/ReportingService.svc

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

  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>

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

最佳答案

好吧,我的回答有点蹩脚,不是我想要的,但它有效。我更改了 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>

关于c# - 用于SSRS和WCF测试的Soap请求的QUERY方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com