【问题标题】:c# Uri Templatesc# Uri 模板
【发布时间】:2016-08-09 11:53:56
【问题描述】:

我是 REST 服务开发的新手,我目前正在编写一个必须支持现有调用格式的 WCF Rest 服务。

我知道通过添加

[WebInvoke(Method = "GET", UriTemplate = "{id}/testid.xml")]
string testid(string id);

对于我的网络方法,请求将使用:

http://[hostname]/255/testid.xml

我想要的是能够使用 http://255/[hostname]/testid.xml

请注意,该服务托管在 Windows 服务应用程序中。

感谢您的帮助!

【问题讨论】:

    标签: c# rest wcf


    【解决方案1】:

    你不能。给定 URI 的结构如下:

    例如http://host/path?q=x

    这可以分为:

    • http:// - 方案
    • host/ - 权威
    • 路径 - 路径
    • ?q=x - 查询字符串

    URI 模板仅适用于 URI 的 Path 和 Querystring 组件。无法以这种方式访问​​计划和权限。

    【讨论】:

      【解决方案2】:

      要在 URL 的参数中使用特殊字符,您必须配置 HttpListenerRequestUriBuilder。此构建器根据设置取消转义或不进行编码。您可以将此代码添加到您的 app.config 文件中:

      <configuration>
        <system.net>
          <settings>
            <httpListener unescapeRequestUrl="false"/>
          </settings>
        </system.net>
      </configuration>
      

      【讨论】:

      • OP的问题是关于如何在URI路径中的主机名之前有URI模板参数。不是如何转义特殊字符
      【解决方案3】:

      这是不可能的。您不能在域名和服务名称之前添加参数或不能在uri中传递参数。可以在 Uri 中的域名和服务名后添加参数。

      【讨论】:

        猜你喜欢
        • 2020-12-06
        • 1970-01-01
        • 2019-01-20
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        • 2012-10-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多