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改版了.

 

 調用成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM