0
我正在寫一個Web服務,如下代碼:使用WCF REST服務,有多個參數,並允許爲空的參數
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
// BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/BudgetBalance/{userlogin}/{prnumber=null}")]
Budget BudgetBalance(string userlogin, string prnumber);
正如你可以在上面的代碼中看到,第二個參數可以填充或依然古色古香空。通過這樣做,我可以通過兩個不同的網址訪問該服務。
- http://localhost:44880/Service1.svc/BudgetBalance/nurul.widiyanti
- http://localhost:44880/Service1.svc/BudgetBalance/nurul.widiyanti/PRM-000114
如果第二個參數填充有一些數據,該服務將返回不同的值。問題是當我想要使用這個webservice時。以下是我試圖調用此服務的代碼。
WebClient proxy = new WebClient();
string serviceUrl = string.Format("http://localhost:1089/Service1.svc/BudgetBalance/Nurul.Widiyanti/PRM-000114");
byte[] data = proxy.DownloadData(serviceUrl);
Stream _mem = new MemoryStream(data);
var reader = new StreamReader(_mem);
var result = reader.ReadToEnd();
var model = JsonConvert.DeserializeObject<Budget>(result);
這不起作用,並出現錯誤。我意識到,如果我改變UriTemplate
內OperationContract
到像這樣的代碼將工作:
UriTemplate = "/BudgetBalance/{userlogin}/{prnumber}"
但如果我這樣做,它不適合我的要求。我需要創建一個允許其中一個參數保持爲空的web服務(空)。這可能實現這個要求嗎?如果是這樣,請指導我找到答案。
嗨@war,你的代碼並沒有解決這個問題。通過使用你的代碼。如果我沒有填寫第二個參數。未找到服務返回終結點。 –
您可能需要第二個UrlTemplate映射(我的答案是一秒鐘) – War