0

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

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

  1. 运行网络服务,
  2. 复制根 URL(例如http://localhost:81/
  3. 将根 URL 应用到我的测试项目,
  4. 运行测试项目。

我希望能够做到这一点:

  1. 按 F5
  2. --> web 服务开始运行
  3. --> 测试开始运行,自动查找 IIS 决定运行服务的位置。

有办法吗?

4

2 回答 2

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。

Besides that you can also try to use the ServerManager class to find the current sites running in IIS, but I don't think this will work if you're running in IIS Express (which is also possible if you're working with Azure).

于 2012-07-25T09:40:05.290 回答
0

修复 WCF 项目的端口号:转到项目的属性,将“使用动态端口”设置为 false,然后指定一个固定数字,例如 81。

在您的解决方案中指定多个启动项目:在解决方案上单击鼠标右键:选择“设置启动项目”,然后选中单选按钮“多个启动项目”,将您的 WCF 服务项目包括在启动列表中。

我希望这能满足您的需求...

于 2012-07-25T09:12:52.853 回答