C# Web api返回404
我正在visual studio中对我的web api控制器进行一些自动集成测试。我的测试中有以下代码:C# Web api返回404,c#,.net,asp.net-mvc,asp.net-web-api,C#,.net,Asp.net Mvc,Asp.net Web Api,我正在visual studio中对我的web api控制器进行一些自动集成测试。我的测试中有以下代码: var url = serverAddress + "/api/PostalCodes?postalCode=" + postalCodeToFind; var client = new HttpClient(); client.DefaultRequestHeaders.Add("accept", "application/json"); HttpResponseMessage respo
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将正常工作并返回一个值。我也有相同的url做一篇没有postalCodeToFind查询参数的文章,它也很好地工作
有什么线索吗?测试没有加载控制器 您是否有自定义的冲突解决程序,或者您是否希望烘焙的冲突解决程序能够拾取它 如果您使用的是自定义解析器,即从DefaultAssembliesResolver继承,请确保正在加载包含控制器的库
如果您希望“烘焙解析程序”将其拾取,则包含控制器的库需要位于运行测试的目录中。仅在浏览器中粘贴链接时,该功能是否有效?API可能被配置为只接受POST请求。POST和GET不是同一件事,因此完全有可能在同一Url上为其中一个而不是另一个获取404,这是否推荐是另一个问题。但要关注这个问题:您的测试中serverAddress的值是多少?如果我在测试selfhost服务器上的浏览器中执行get,请求将挂起…@DanPuzey我更新了我的问题。请注意,serverAddress适用于post。正在加载控制器,因为相同的url(但通过post请求完成)有效。