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