ASP.NET Web Api GET不会接受“。”在URL参数中

时间:2013-12-20 09:24:31

标签: iis asp.net-web-api asp.net-mvc-routing

我目前正在开发一个Web API,如果将FQDN传递给API,它必须返回服务器列表或单个服务器。

路线是:

"api/Servers/{fqdn}"

当我在这样的URL上从REST客户端执行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”文件扩展名。但这只是我的假设。

以前有没有人经历过这种情况,如果有,你是如何解决它的?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我认为你需要在将url传输到服务器之前对其进行编码。有一个javascript函数urlencode。你可以查一下。