【问题标题】:Can't pass in "%26" to a WebGet UriTemplate variable in a WCF service?无法将“%26”传递给 WCF 服务中的 WebGet UriTemplate 变量?
【发布时间】:2010-06-23 15:07:56
【问题描述】:

我有一个具有此声明操作的 WCF 服务:

[WebGet(UriTemplate = "Test/{*testString}")]
public String Test(String testString)
{
    return testString;
}

但是,当尝试调用 URL Test/You%26Me 时,IIS 返回错误:

A potentially dangerous Request.Path value was detected from the client (&).

我的目标是通过其 URL-Encoding: %26 允许 URI 中的 & 符号

通配符没有帮助。有什么方法可以在不禁用安全功能的情况下防止此错误?

【问题讨论】:

    标签: wcf iis ampersand webget uritemplate


    【解决方案1】:

    尝试在 Web.config 中使用RequestPathInvalidCharacters 配置属性,避免使用如下字符:

    <system.web>
       <httpRuntime requestPathInvalidCharacters="<,>,*,:,\\" />
    </system.web>
    

    【讨论】:

    • 我忘了说明我还没有使用 .NET 4.0 —— .NET 3.5 有类似的选项吗?
    • 恐怕3.5中唯一的选择就是实现自定义RequestValidator:msdn.microsoft.com/en-us/library/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    相关资源
    最近更新 更多