WCF REST模式下的UriTemplate路径问题

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

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

WCF REST模式下的UriTemplate路径问题

2.代码如下 Interface

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

}

WCF REST模式下的UriTemplate路径问题

Service

WCF REST模式下的UriTemplate路径问题

program

WCF REST模式下的UriTemplate路径问题

appconfig

WCF REST模式下的UriTemplate路径问题

client还没有用到即发生错误

错误是

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

WCF REST模式下的UriTemplate路径问题

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

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

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

uritemplate = "?id=id"

public xxxx get(int id);

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

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

但是会有另外一个错误

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

WCF REST模式下的UriTemplate路径问题

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

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

WCF REST模式下的UriTemplate路径问题

必须得

WCF REST模式下的UriTemplate路径问题

才可以

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

WCF REST模式下的UriTemplate路径问题

调用成功

上一篇:mybatis动态sql中的两个内置参数(_parameter和_databaseId)


下一篇:Selenium2+python自动化45-18种定位方法(find_elements)