首页 > 解决方案 > Azure 管道绑定到 localhost 以进行测试

问题描述

我正在尝试通过启动 Web 服务器并在不同进程中使用 HTTP 请求来访问它,从而在 Azure Pipelines 中运行集成测试。

我收到的错误是

System.AggregateException : One or more errors occurred. (Failed to bind to address http://127.0.0.1:49159: address already in use.)

似乎产生错误的代码是

var builder = new WebHostBuilder()
                .UseUrls("http://localhost:49159")
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .Configure(app =>
                {
                    app.Run(handler);
                })
                .Build();

                builder.Start();

我尝试了一堆不同的端口,因此假设您无法绑定到 Azure Pipelines 上的 localhost。

有谁知道是否有办法实现我想用 Azure Pipelines 做的事情?

任何帮助将不胜感激!

标签: c#asp.netazureazure-pipelinesazure-pipelines-build-task

解决方案


是的,这绝对是可能的。也许您不止一次地启动了网络主机而不是破坏它(即每个测试夹具等)?

一般来说,这些是在管道中运行集成测试的一些可能方法:

  • 如果您的集成测试是用 .Net 编写的,那么请考虑使用WebApplicationFactory在单个进程中运行服务器和测试。

  • 如果您使用不同的工具进行集成测试,node 的start-server-and-test模块可以很好地启动您的服务器,等待它准备好然后执行测试(您也可以将它用于 .Net 项目)。这是.Net 项目的示例管道


推荐阅读