以 %20 结尾的 WCF REST URI 失败并出现 404

Posted

技术标签:

【中文标题】以 %20 结尾的 WCF REST URI 失败并出现 404【英文标题】:WCF REST URIs ending in %20 fail with 404 【发布时间】:2012-06-23 02:50:14 【问题描述】:

WCF REST Web 服务提供以下格式的查找:

https://mysite/mycontract/search/searchtext

hellohello%20world 的搜索文本,服务执行正确。但是,当使用 https://mysite/mycontract/search/hello%20 中以空格结尾的文本时,服务将失败并返回 404。没有自定义路由。

wcf 路由中的哪些限制会导致此问题,以及可用的解决方法(最好是更改 uri 结构除外)?

使用其他实施信息进行编辑:

合约

    [ServiceContract(SessionMode = SessionMode.NotAllowed)]
    public interface IPointOfSale
    
        .......

        [WebInvoke(UriTemplate = "search/SKU", Method = "GET")]
        System.Xml.Linq.XElement ProductLookup(string SKU);

    

方法

public XElement ProductLookup(string SKU)

   //product search here.

【问题讨论】:

我无法在我的 WCF REST 服务中重现这一点(我在 URL 末尾正确地使用 %20 进行路由),你能提供一个例子吗? @EkoostikMartin 我认为关键是它不在查询字符串中,而是在路线的末尾——你能看看这是否会影响你的结果吗? 你是对的,我修改了我的 URI 看起来像你的,我得到了 404 可能相关:***.com/questions/1126735/… 【参考方案1】:

我今天一直在处理同样的问题,发现其他帖子告诉我们,在 .NET 4 中,解决方案在于在 web.config 中设置以下内容:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

这为我解决了问题!

【讨论】:

以上是关于以 %20 结尾的 WCF REST URI 失败并出现 404的主要内容,如果未能解决你的问题,请参考以下文章

以 .au 结尾的 URI 上的 Spring 更改媒体类型

WCF REST 入门工具包无法安装

无扩展 REST WCF 服务为 PUT 方法返回 http 405

快速入门系列--WCF--03RESTFUL服务与示例

Jquery Rest 与 WCF 3.5 的通信

在 wcf rest 服务 C# 中使用 Stream 作为输入时缺少第一个元素