自动将测试项目连接到WCF服务

时间:2012-07-25 09:08:02

标签: c# .net wcf azure

我已经编写了一个WCF Web服务(不是一个网站,只是基于HTTP的JSON),旨在在Azure中运行。我需要为它编写测试。

我知道怎么做,但看起来很业余:

  1. 运行网络服务,
  2. 复制根网址(例如http://localhost:81/
  3. 将根URL应用于我的测试项目
  4. 运行测试项目。
  5. 我希望能够这样做:

    1. 点击F5
    2. - > Web服务开始运行
    3. - >测试开始运行,自动查找IIS决定运行服务的位置。
    4. 有办法吗?

2 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点。由于您使用的是Windows Azure,我假设您正在使用模拟器。使用模拟器意味着RoleEnvironment可用,您可以获得可用的角色,实例和端点列表。

var endpoint = RoleEnvironment.Roles["WebRole1"].Instances.First().InstanceEndpoints["Endpoint1"];
var siteUrl = String.Format("{0}://{1}", endpoint.Protocol, endpoint.IPEndpoint);

此代码将获得名为 WebRole1 的角色,获取此角色的第一个实例(您可以使用它来测试您的Web服务是否支持负载平衡)并获取 InstanceEndpoint 。实例端点将为您提供所需的所有信息,如协议(http / https)和IP /端口(这些是您在ServiceConfiguration中配置的内容)。

注意:这也适用于在模拟器外部运行的进程(如测试项目)。您唯一需要做的就是引用Microsoft.WindowsAzure.ServiceRuntime。

除此之外,您还可以尝试使用ServerManager类来查找在IIS中运行的当前站点,但如果您在IIS Express中运行,我认为这不会起作用(如果你正在使用Azure)。

答案 1 :(得分:0)

修复WCF项目的端口号:转到项目属性,将“use dynamic ports”设置为false,然后指定固定数字,例如81。

在解决方案中指定多个启动项目:解决方案上的鼠标右键:选择“set startup projects”,然后检查radiobutton“多个启动项目”,在启动列表中包含您的WCF服务项目。

我希望这符合您的需求......