【问题标题】:SystemWeb Host: IAppBuilder.UseWebApi ignores paths with extensionsSystemWeb 主机:IAppBuilder.UseWebApi 忽略带有扩展名的路径
【发布时间】:2014-08-28 12:24:53
【问题描述】:

我有一个 Owin Startup 类,它注册一个 WebApi 控制器操作并使用 IAppBuilder.UseWebApi 将其挂钩。我的路线模板是/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 serverOwin hosted on IIS doesn't capture URLs with Dot "."

【问题讨论】:

    标签: iis asp.net-web-api owin


    【解决方案1】:

    经过进一步调试,在连接到 WebApi 之前,我正在为 SignalR 映射另一个 OWIN 中间件,顺序似乎在 Web-Host 上很重要,但在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 2021-07-11
      • 2015-06-09
      • 1970-01-01
      • 2014-04-10
      • 2013-05-07
      • 1970-01-01
      相关资源
      最近更新 更多