post と get メソッドに関する記事は REST サービスにたくさんありますが、put/delete に適した記事はありませんでした。1 つの休憩サービスを作成し、4 つの操作を呼び出してみました。取得と投稿は機能しますが、書き込み/削除はできません。ここでコードを提供します。
Silverlight の put および post メソッドで、残りのサービスを呼び出す
const string uridel =
"http://localhost:50211/CustomerService.svc/deletecustomer/1";
const string uriput =
"http://localhost:50211/CustomerService.svc/modifycustomer/1";
client.DownloadStringCompleted += (s, ev) =>//delete method
{
XDocument xml = XDocument.Parse(ev.Result);
var Customer = from results in xml.Descendants
("CustomerResponse")
select new CustomerResponse
{
CustomerId = Int32.Parse(results.Descendants
("CustomerId").First().Value),
};
int id = Customer.Select(w => w.CustomerId).FirstOrDefault();
MessageBox.Show("result is :" + id);
};
client.DownloadStringAsync(new Uri(uridel), "DELETE");
CustomerResponse cusres = new CustomerResponse();//put method
cusres.CustomerName = textBox1.Text;
cusres.CustomerPh = textBox2.Text;
DataContractSerializer dataContractSerializer =
new DataContractSerializer(typeof(CustomerResponse));
MemoryStream memoryStream = new MemoryStream();
dataContractSerializer.WriteObject(memoryStream, cusres);
string xmlData = Encoding.UTF8.GetString(memoryStream.ToArray(), 0,
(int)memoryStream.Length);
client.UploadStringCompleted += (s, ev) =>
{
XDocument xml = XDocument.Parse(ev.Result);
var Customer = from results in xml.Descendants("CustomerResponse")
select new CustomerResponse
{
CustomerId = Int32.Parse(results.Descendants
("CustomerId").First().Value),
};
int id = Customer.Select(w => w.CustomerId).FirstOrDefault();
MessageBox.Show("result is :" + id);
textBox1.Text = "";
textBox2.Text = "";
};
client.Headers[HttpRequestHeader.ContentType] = "application/xml";
client.UploadStringAsync(new Uri(uriput), "PUT", xmlData);
wcfサービスで
[OperationContract]
[WebInvoke(Method = "DELETE",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "deletecustomer/{id}")]
CustomerResponse DeleteCustomer(string id);
[OperationContract]
[WebInvoke(Method = "PUT",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "modifycustomer/{id}")]
CustomerResponse ModifyCustomer(string id,CustomerResponse cusres);
削除の場合、サーバーが見つからないという例外が1つあり、指定されたメソッドがこのリクエストではサポートされていないなどのエラーが発生しました。誰でもエラーの場所を提案できますか..または、Silverlightで消費するputおよびdeleteメソッドを使用できる優れた記事を提案できますか?