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 查询参数),而且效果也很好......
有什么线索吗?
测试未加载控制器。
您是否有自定义解析器,或者您是否希望烘焙的解析器能够拾取它?
如果您使用的是自定义解析程序(即从 DefaultAssembliesResolver 继承),请确保正在加载包含控制器的库。
如果希望烘焙的解析程序能够选取它,则包含控制器的库需要位于运行测试的目录中。