Web api返回404

时间:2013-09-24 13:07:17

标签: c# .net asp.net-mvc asp.net-web-api

我在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查询参数),它也运作良好...

任何线索?

1 个答案:

答案 0 :(得分:0)

测试未加载控制器。

你有一个自定义解析器,或者你是否期望在旋转变压器中捡起它?

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

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