gpt4 book ai didi

c# - 参数返回 404 的 WebAPI 路由属性

转载 作者:行者123 更新时间:2023-11-30 21:54:39 24 4
gpt4 key购买 nike

我可以在 Fiddler 中看到相应的 HttpRequest,但从未调用 Controller 方法,但请求似乎被拦截并返回了 404。其他 Controller 方法被适本地调用。

HTTP请求

GET http://localhost:36696/test/file/69946/FF47F87FE63E6C24644631FAEA15B157/file.pdf HTTP/1.1
Host: localhost:36696
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,sv;q=0.6

Controller 方法

[Route("test/file/{fileId:int}/{hash}/file.pdf")]
public HttpResponseMessage GetFile(int fileId, string hash)
{
[..]
}

问题;

  • 如何正确设置路由 (System.Web.HttpRouteAttribute)嵌入参数?

  • 是否有任何默认过滤器禁止我访问 PDF 文件?这是在 IIS Express (VS2013) 中

出于隐私方面的考虑,我无法发布整个 web.config,但文件中没有 httpHandlersmimeType 条目。

最佳答案

IIS 认为它正在寻找一个静态文件并且没有通过托管管道运行请求。

将此条目添加到 <handlers> 下的 web.config将告诉 IIS 通过路由/托管管道运行这些请求。

   <add
name="ManagedPDFExtension"
path="test/file/*/*/*.pdf"
verb="GET"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />

我在 path 中非常明确地包含了这条路线这样它就不会通过完整的 .NET 管道运行所有静态内容。如果您有很多这样的端点或以这种方式提供所有文件,那么您可以使用更通用的路径模式。

关于c# - 参数返回 404 的 WebAPI 路由属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32908795/

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