如何使WCF在URL中允许点(。)?

时间:2013-10-28 13:22:51

标签: asp.net-mvc wcf asp.net-mvc-4 url urlencode

我使用WCF并使用这样的方法:

[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "LoadProducts/{key}/{price}")]
XmlDocument LoadProducts(string key, string price= null);

pricestring,在LoadProducts内我将尝试将其从字符串解析为双倍并执行其他操作。

但是在url中,我无法获取请求price的任何参数,如'24 .25','0.253'等。它不允许任何带点的值。

本地主机:13448 / RestService.svc / LoadProducts /空/ 41.145

我收到错误“请查看以下网址并确保拼写正确。”

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

点已经在URL中有意义,它们将目标主机名,IP地址或它们将资源与其扩展名分开的路径分开。您需要对请求网址进行URL编码。

在.NET中,有一个名为UrlEncode的方法可以帮助您对URL进行编码。它是:

string url = "http://localhost/MyService/MyKey/24.25";

string encodedUrl = HttpUtility.UrlEncode(url);

查看UrlEncode的MSN文档以获取更多详细信息。

答案 1 :(得分:1)

我解决了我的问题。我将服务器从 Visual Studio Development Server 切换到本地IIS Web服务器,url在参数内部使用了点符号。