問題:在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改版了.
調用成功