encodeURIComponent不使用Web API调用

时间:2015-06-09 16:31:14

标签: javascript c# asp.net-web-api

我在拨打电话时收到var input = YOUR_ORIGINAL_STRING; input.Replace("\"", "\"\"").Replace("|\"\"", "|\"").Replace("\"\"|", "\"|"));

404 Not Found

我认为使用var url = rootWebApiUrl + '/folders/' + $scope.selectedServer.Name + "/" + serviceName; $http.get(url) // the rest of this line doesn't matter for this issue 可能有所帮助,但我得到了相同的encodeURIComponent错误:

404 Not Found

这是Web API方法签名:

var url = rootWebApiUrl + '/folders/' + $scope.selectedServer.Name + "/" + encodeURIComponent(serviceName);

如果在调试时更改服务名称,则第一个选项(上面)有效。原始服务名称为[Route("folders/{serverName}/{serviceName}")] [HttpGet] public IEnumerable<Folder> Folders(string serverName, string serviceName) 。如果我将其更改为没有空格的内容,例如Company Name Message Bus Manager 3.6 - MesFinishingEvents,那么Web API调用会成功,我可以在Web API方法中进行调试。

如何在snuh电话中传递原始服务名称?

修改:网址值:

服务名称包含空格:
$http.get(url)

使用简单的服务名称:
http://localhost:4153/api/services/folders/ServerName/Company%20Name%20Message%20Bus%20Manager%203.6%20-%20MesFinishingEvents

1 个答案:

答案 0 :(得分:3)

当您的参数herehere中有.时,WebAPI控制器会很困难。

您的方法调用将一直有效:

http://localhost:4153/api/services/folders/ServerName/Company%20Name%20Message%20Bus%20Manager%203

以及之后,如果期间不存在。

最快的解决方案是添加尾部斜杠。更长的解决方案是在IIS中修改您的站点HTTP处理程序。