簡體   English   中英

如何將IIS應用程序配置為充當網關

[英]How to configure IIS application to work as a gateway

我寫了一個ASP.NET Web API,它基本上是一個API網關。 網關的基本URL是http://localhost:88/ApiGateway 我實現的服務會查找一些標頭值和cookie,以路由請求。 目前,我將其用於藍綠色部署。

找到具有特定API-ID的標頭或cookie時,該請求將路由到相應的API。

例如,如果找到的API-ID是alpha-v1.7.4 ,並且URL是http://localhost:88/gateway/app/login.html ,則請求將路由到http://localhost:8080/app/alpha-v1.7.4/app/login.html實際應用程序或網站所在的位置。

當使用OWIN和Katana時,這完美地工作。 所有網址均正確路由。

在IIS中安裝網關時,事情變得很奇怪。

我已經將非常詳細的日志記錄到網關中,該日志記錄了每個請求和找到的路由。 在IIS上,我觀察到以下請求已到達網關並正確路由:

1: http://localhost:88/gateway/app/some_directory/
2: http://localhost:88/gateway/app/another_directory_with_a.dot/
3: http://localhost:88/gateway/app/some_path_no_trailing_slash

以下請求到達網關:

4: http://localhost:88/gateway/app/no_trailing_slash_with_a.dot
5: http://localhost:88/gateway/app/index.html

在我看來,IIS允許傳遞任何目錄路徑(即帶有.../.../directory/的訓練斜杠)和所有資源路徑(即不帶有.../.../resource尾隨斜杠) )聞起來不像文件(因為它們沒有點),但是阻止了沒有尾部斜杠但內部有點的路徑( .../.../may_be_a.file被阻止,但是.../.../not_a.file/通過)。

遵循以下說明對我不起作用: 如何在IIS 7.5上為特定網站禁用請求篩選?

任何想法如何配置IIS以使其正常工作?

在弄亂了對我不起作用的RAMMFAR之后,我想到了這個解決方案:

<system.webServer>
  <handlers>
    <clear />
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
</system.webServer>

只需清除所有處理程序並添加一個處理程序,就可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM