gpt4 book ai didi

iis - SystemWeb Host : IAppBuilder. UseWebApi 忽略带有扩展名的路径

转载 作者:行者123 更新时间:2023-12-02 04:54:11 25 4
gpt4 key购买 nike

我有一个 Owin Startup 类,它注册了一个 WebApi Controller 操作并使用 IAppBuilder.UseWebApi 将其 Hook 。我的路由模板是 /api/packages/{id}/{version},其中 version 可能包含句点(如 1.0.0)。

这适用于自托管,但当我尝试使用 Microsoft.Owin.Host.SystemWeb 在 IIS 中运行我的代码时,当路径看起来像静态内容请求时,某些东西阻止我的操作被调用。

例如,GET/api/packages/Foo/1.0 在自主机上工作,但在 IIS 上导致 404。

如果我在 GET/api/packages/Foo/1.0/ 中添加尾部斜杠,它在自主机和 IIS 中都有效。

似乎 UseWebApi 方法中的某些东西正在阻止 Web Api 处理看起来像带有扩展名的文件的请求。

其他 Owin 中间件看到了所有这些请求,所以我知道请求正在进入 Owin 管道,但是 UseWebApi 方法似乎忽略了一些请求。

相关:Owin Middleware results in 404 on server , Owin hosted on IIS doesn't capture URLs with Dot "."

最佳答案

进一步调试后,在 WebApi 中接线之前,我正在为 SignalR 映射另一个 OWIN 中间件,顺序似乎在 Web 主机上很重要,但在 Self-Host 上无关紧要。更改顺序为我解决了这个问题。

更新:当使用 Owin.Host.SystemWeb 时,IAppBuilder.UseStageMarker(PipelineStage.MapHandler) 应该在任何希望处理请求的中间件之后被调用用于静态内容。

参见 https://katanaproject.codeplex.com/wikipage?title=Static%20Files%20on%20IIShttp://www.asp.net/aspnet/overview/owin-and-katana/owin-middleware-in-the-iis-integrated-pipeline .

关于iis - SystemWeb Host : IAppBuilder. UseWebApi 忽略带有扩展名的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24620448/

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