2013-12-20 29 views
0

我目前正在使用Web API,如果FQDN傳遞給API,則必須返回服務器或單個服務器的列表。ASP.NET Web Api GET不會接受「。」在URL參數

的路線是:

"api/Servers/{fqdn}" 

當我從一個REST客戶端對URL進行GET這樣的:

GET api/Servers/hostname.domain.com 

IIS返回404未找到。

當我執行沒有「。」的GET時。在URL參數中:

GET api/Servers/hostname_domain_com 

它被成功路由到我的API控制器。

當我收到404錯誤頁面時,它是IIS 8錯誤頁面。這使我相信,當有一個「。」在IIS甚至沒有將它傳遞給MVC管道的URL中,並且我的代碼沒有執行。可能是因爲IIS試圖爲請求尋找另一個處理程序,因爲它看起來像我在請求「.com」文件擴展名。但這只是我的假設。

有沒有人經歷過這種情況,如果是的話,你是如何解決它的?

回答

1

在Web.config中的<system.webServer>下加<modules runAllManagedModulesForAllRequests ="true"/>

+1

只是爲了增加此答案,問題出現在IIS看到a.com認爲您正在嘗試訪問靜態文件,因此不會將請求分派給ASP.NET管道。通過添加Badri建議的行,您可以覆蓋此行爲。 –

+0

好的除了答案,因爲它只包含如何部分,但不包括爲什麼 - 部分。謝謝。 – Badri

0

我認爲你需要在將URL傳輸到服務器之前進行編碼。有一個JavaScript函數urlencode。你可以檢查它。

+0

編碼fqdn的Url並沒有幫助,因爲使用函數encodeURIComponent()編碼爲「www.google.com」的url爲「www.google.com」 –