gpt4 book ai didi

c# - web.api 委托(delegate)处理程序在执行 innerhandler 时给出 404

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:56 24 4
gpt4 key购买 nike

我正在为 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 时,它返回“找不到与请求的 URI 匹配的 HTTP 资源”

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

在客户端 Controller 中我有这个 Action

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

最佳答案

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

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

关于c# - web.api 委托(delegate)处理程序在执行 innerhandler 时给出 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24548262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com