Web api return 404

本文关键字:return api Web | 更新日期: 2023-09-27 18:32:46

我正在我的Web api控制器上的Visual Studio中进行一些自动化集成测试。我的测试中有以下代码:

var url = serverAddress + "/api/PostalCodes?postalCode=" + postalCodeToFind;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("accept", "application/json");
HttpResponseMessage response = client.GetAsync(url).Result;
response.EnsureSuccessStatusCode();

我收到以下错误:

System.Net.Http.HttpRequestException:响应状态代码不 指示成功:404(未找到)。

使用的自主机服务器:

private const string serverAddress = "http://localhost:8080";
        [TestInitialize]
        public void Initialize()
        {
            config = new HttpSelfHostConfiguration(serverAddress);
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            config.MaxReceivedMessageSize = 2024 * 2024;
            config.MaxBufferSize = 2024 * 2024;
            server = new HttpSelfHostServer(config);
            server.OpenAsync().Wait();
        }

奇怪的是,如果我在 IIS 中有我的 Web api 控制器,则相同的 URL 将正常工作并返回一个值。我也有相同的网址做帖子(没有 postalCodeToFind 查询参数),而且效果也很好......

有什么线索吗?

Web api return 404

测试未加载控制器。

您是否有自定义解析器,

或者您是否希望烘焙的解析器能够拾取它?

如果您使用的是自定义解析程序(即从 DefaultAssembliesResolver 继承),请确保正在加载包含控制器的库。

如果希望烘焙的解析程序能够选取它,则包含控制器的库需要位于运行测试的目录中。