Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web api返回404_C#_.net_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# Web api返回404

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

我正在visual studio中对我的web api控制器进行一些自动集成测试。我的测试中有以下代码:

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请求完成)有效。