c#Uri模板

时间:2016-08-09 11:53:56

标签: c# rest wcf

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

我知道添加

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

我的webmethod请求将使用:

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

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

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

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

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

这可以分解为:

  • http:// - Scheme
  • 主持人/ - 权限
  • 路径 - 路径
  • ?q = x - Querystring

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

答案 1 :(得分:0)

要在URL中使用参数内部的特殊字符,您必须配置HttpListenerRequestUriBuilder。此构建器是否取消基于设置的编码。您可以将此代码添加到app.config文件中:

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

答案 2 :(得分:0)

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