Iis SystemWeb主机:IAppBuilder.UseWebApi忽略带有扩展名的路径

Iis SystemWeb主机:IAppBuilder.UseWebApi忽略带有扩展名的路径,iis,asp.net-web-api,owin,Iis,Asp.net Web Api,Owin,我有一个Owin启动类,它注册一个WebApi控制器操作,并使用IAppBuilder.UseWebApi将其挂钩。我的路由模板是/api/packages/{id}/{version},其中version可能包含句点(如1.0.0) 这对自托管很好,但当我尝试使用Microsoft.Owin.Host.SystemWeb在IIS中运行代码时,当路径看起来像静态内容请求时,某些东西阻止调用我的操作 例如,GET/api/packages/Foo/1.0在自主机上工作,但在IIS上会导致404 如

我有一个Owin启动类,它注册一个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/
中添加一个尾随斜杠,那么它在self-host和IIS中都可以工作

UseWebApi方法中似乎有什么东西阻止了WebAPI处理看起来像带扩展名的文件的请求

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


相关:,

在进一步调试之后,在连接WebApi之前,我正在为SignalR映射另一个OWIN中间件,顺序在Web主机上似乎很重要,但在自主机上却不重要。更改订单为我解决了这个问题

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

见和