我正在为iOS应用创建web.api(c#中的v1)。 该应用程序正在以1次爆发向应用程序发送gps-date。所以我们想在应用程序中gzip数据,然后处理这些数据。
我创建了一个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
时,它返回&#34;找不到与所请求的URI匹配的HTTP资源&#34;
我添加了大量日志记录,但我似乎无法找到为什么它找不到已经发布的资源
客户端控制器中的我有这个动作
public HttpResponseMessage GPSDataWithGZip([FromBody] GpsRequest model)
{
return SaveGPSData(model);
}
答案 0 :(得分:0)
看起来InnerHandler无法将当前网址与路线匹配。 将默认值添加到它工作的路线后。
defaults: new {controller='client', action='GPSDataWithGZip'}