WCF REST模式下的UriTemplate路径问题

Posted eurasian-magpie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WCF REST模式下的UriTemplate路径问题相关的知识,希望对你有一定的参考价值。

问题:在WCF4.0中,用UriTemplate进行表明路径参数的时候会出现问题

1.创建的项目是Service.Interface【4.0】和Service【4.0】还有Client【4.0】

技术分享图片

 

2.代码如下 Interface

[ServiceContract]
public interface IEmployees
{
[WebGet(UriTemplate = "Add/{x}/{y}")]
double Add(double x, double y);

}

技术分享图片

Service

技术分享图片

program

技术分享图片

appconfig

技术分享图片

client还没有用到即发生错误

错误是

System.InvalidOperationException:“约定“IEmployees”中的操作“Add”具有非“字符串”类型的路径变量“x”。UriTemplate 路径段的变量类型必须为“字符串”。”

技术分享图片

 

 看网上的解决方案也没找到.

这个时候两个中解决方案,一种是直接把参数加载后面的

可以使用int等值类型数据.注意必须是参数,不能是uri路径的一部份.也就是说,你必须写成这样:

uritemplate = "?id=id"

public xxxx get(int id);

如果不想用,则表示暂时只实现了将所有的参数类型更改为string,不报错了

但是,在3.5下就不会出错,不知道为什么,有大神明白告诉一下

但是会有另外一个错误

System.InvalidOperationException:“ContractDescription“IEmployees”有零个操作;协定必须至少有一个操作。”

技术分享图片

 

 是因为接口里所有的方法都没有加[OperationContract],加上就OK了.

但是这个[OperationContract]还不能加在add上否则还是会报上面的错误

技术分享图片

 

必须得

技术分享图片

才可以

但是在4.0中即使加上[OperationContract] 也会出现刚刚的那个模板必须用字符串的错误,不知道是不是4.0改版了.

技术分享图片

 

 调用成功





以上是关于WCF REST模式下的UriTemplate路径问题的主要内容,如果未能解决你的问题,请参考以下文章

WCF Rest用法

WCF Rest用法

WCF REST 错误 HTTP 307

在 WCF Rest 中发布相关实体

WCF REST 服务为 POST 返回 405

WCF Rest API:如何使用邮递员发送字典