2017-03-06 10 views
0

許可:あなたは上記のコードで見ることができるようには、複数のパラメータでWCF休憩サービスを利用して、私は以下のコードのように、Webサービス書いてNULL可能なパラメータ

[OperationContract] 
    [WebInvoke(Method = "GET", 
    ResponseFormat = WebMessageFormat.Json, 
    RequestFormat = WebMessageFormat.Json, 
    // BodyStyle = WebMessageBodyStyle.Wrapped, 
    UriTemplate = "/BudgetBalance/{userlogin}/{prnumber=null}")] 
    Budget BudgetBalance(string userlogin, string prnumber); 

、二番目のパラメータを充填することができるかkeepedはnullを。これにより、私は2つの異なるURLでサービスにアクセスできます。

  1. http://localhost:44880/Service1.svc/BudgetBalance/nurul.widiyanti
  2. http://localhost:44880/Service1.svc/BudgetBalance/nurul.widiyanti/PRM-000114

第二のパラメータは、いくつかのデータで満たされている場合、サービスは、異なる値を返します。問題は、このWebサービスを消費したいときです。私はこのサービスを呼び出しようとしました。

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 = "/BudgetBalance/{userlogin}/{prnumber}"

しかし、私はこれを行う場合、それは私の要件に合わない:私はこのような何かにOperationContractUriTemplateを変更した場合、このコードが動作することを実現しています。私は、パラメータの1つが空(null)のままであることを可能にするWebサービスを作成する必要があります。これは可能ですか?もしそうなら、答えを見つけるために私を案内してください。

答えて

0

私は

... 
UriTemplate = "/BudgetBalance/{userlogin}")] 
UriTemplate = "/BudgetBalance/{userlogin}/{prnumber}")] 
Budget BudgetBalance(string userlogin, string prnumber = null) { .. } 
+0

...あなたはこのような何かをしたいと思います@warこんにちは、あなたのコードは、この問題を解決しませんでした。あなたのコードを使って。私は2番目のパラメータを記入しなかった場合。サービス・リターン・エンドポイントが見つかりません。 –

+0

おそらく2番目のUrlTemplateマッピングが必要です(1秒間私の回答を更新します) – War

関連する問題