許可:あなたは上記のコードで見ることができるようには、複数のパラメータで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でサービスにアクセスできます。
- http://localhost:44880/Service1.svc/BudgetBalance/nurul.widiyanti
- 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}"
しかし、私はこれを行う場合、それは私の要件に合わない:私はこのような何かにOperationContract
内UriTemplate
を変更した場合、このコードが動作することを実現しています。私は、パラメータの1つが空(null)のままであることを可能にするWebサービスを作成する必要があります。これは可能ですか?もしそうなら、答えを見つけるために私を案内してください。
...あなたはこのような何かをしたいと思います@warこんにちは、あなたのコードは、この問題を解決しませんでした。あなたのコードを使って。私は2番目のパラメータを記入しなかった場合。サービス・リターン・エンドポイントが見つかりません。 –
おそらく2番目のUrlTemplateマッピングが必要です(1秒間私の回答を更新します) – War