我有一个owin项目,我使用Microsoft.Owin.Host.SystemWeb托管它.它工作正常,但如果我在网址中有一个Dot它失败了,我得到了404.例如
localhost:4070/cdn/aa有效
但
localhost:4070/cdn/aa不起作用
我也做了以下改动
我确信这个设置解决了普通的asp.net web api中的问题,但我和Owin有这个问题.
更新
我用owin主机试过这个类似的行为,用"."调用.没有路由到webapi.
我可以理解当url的最后一部分中有一个点时,框架认为它是一个文件并尝试处理它的行为,但我的问题是我想在我的正常管道中处理这些url.我实际上正在为Microsoft cdn编写代理,并且这些文件是在运行时使用另一台服务器生成的.
这个配置对我有用:
<system.webServer> <handlers> <add name="OWIN" path="*" verb="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler" /> </handlers> </system.webServer>
为了从"public /"文件夹获取文件路径并将其作为响应,我最终得到了这个:
string filePath = System.Web.Hosting.HostingEnvironment.MapPath("~/public" + context.Request.Path);