【问题标题】:How make WCF allow dots(.) in url?如何使 WCF 在 url 中允许点(。)?
【发布时间】:2013-10-28 13:22:51
【问题描述】:

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

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

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

但在 url 中,我无法获取 price 的任何参数,例如“24.25”、“0.253”等。它不允许任何带有点的值。

localhost:13448/RestService.svc/LoadProducts/null/41.145

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

我该如何解决这个问题?

【问题讨论】:

  • 我改变了我的问题,因为我没有在我的asp应用程序中使用它。我单独部署了 WCF 应用程序。
  • 不管叫什么。无论在 URL 中传递点的内容都需要对其进行编码(如下面的答案)。点在 URL 中无效,除了扩展名。

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


【解决方案1】:

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

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

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

string encodedUrl = HttpUtility.UrlEncode(url);

查看UrlEncode 的 MSN 文档了解更多详情。

【讨论】:

【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    相关资源
    最近更新 更多