我在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查询参数),它也运作良好...
任何线索?
答案 0 :(得分:0)
测试未加载控制器。
你有一个自定义解析器,或者你是否期望在旋转变压器中捡起它?
如果您正在使用自定义解析器(即继承自DefaultAssembliesResolver),请确保正在加载包含控制器的库。
如果您希望解析器中的烘焙程序将其取出,则包含您的控制器的库需要位于运行测试的目录中。