2014-06-20 24 views
6

我有一個owin項目,我用它託管它使用Microsoft.Owin.Host.SystemWeb。它工作正常,但如果我在url中有一個點失敗,我得到一個404例如在IIS上託管的Owin不會捕獲帶有「。」的URL。

本地主機:4070/CDN/AA工作

本地主機:4070/CDN/AA不工作

我也做了以下變化

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true">  
    </modules> 

我相信這個設置解決了普通asp.net網頁API的問題,但我有Owin這個問題。

更新

我與owin主機嘗試這樣做是類似的行爲,用電話「」沒有路由到webapi。

我可以理解的行爲,當網址的最後部分有一個點時,框架認爲它是一個文件,並試圖處理它,但我的問題是,我想在我的正常管道中處理這些網址。我實際上正在爲Microsoft CDN編寫代理,並且使用其他服務器在運行時生成這些文件。

回答

7

此配置爲我工作:

<system.webServer> 
    <handlers> 
    <add name="OWIN" path="*" verb="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler" /> 
    </handlers> 
</system.webServer> 

在odred從「公共/」獲取文件路徑文件夾,並把它作爲迴應,我結束了與此:

string filePath = System.Web.Hosting.HostingEnvironment.MapPath("~/public" + context.Request.Path);