网络.在执行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无法将当前url与路由匹配。在给路由添加了default后,它工作了。
defaults: new {controller='client', action='GPSDataWithGZip'}