网络.在执行innerhandler时,委托处理程序返回404

本文关键字:处理 程序 返回 执行 innerhandler 网络 | 更新日期: 2023-09-27 18:11:26

我正在创建一个web。api (c#中的v1)用于iOS应用程序。应用程序会在一瞬间向应用程序发送gps-date。所以我们想在应用程序中压缩数据,然后处理这些数据。

创建了一个DelegatingHandler

public class GZipToJsonHandler : DelegatingHandler
{
    public GZipToJsonHandler(HttpMessageHandler innerHandler)
    {
        InnerHandler = innerHandler;
    }
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
            /* removed unzip code */
            /* removed log call */
            return base.SendAsync(request, cancellationToken);
    }
}

并添加了自定义路由

var handler = new HttpControllerDispatcher(config);
config.Routes.MapHttpRoute(
  "WithGZip",
  "client/GPSDataWithGZip",
  null,
  null, new GZipToJsonHandler(handler)
);

当应用调用路由时,我可以在日志文件中看到处理器被调用了。但是当它到达base.async时,它返回"没有找到与请求的URI匹配的HTTP资源"

我已经添加了很多日志记录,但我似乎找不到为什么它找不到它已经击中的资源

在客户端控制器中我有这个动作

public HttpResponseMessage GPSDataWithGZip([FromBody] GpsRequest model)
{
    return SaveGPSData(model);
}

网络.在执行innerhandler时,委托处理程序返回404

看起来InnerHandler无法将当前url与路由匹配。在给路由添加了default后,它工作了。

defaults: new {controller='client', action='GPSDataWithGZip'}