У меня есть веб-сервис с двумя операциями. Одна операция использует GET, а другая - POST. Обратите внимание, что я не эксперт по веб-сервисам, поэтому, пожалуйста, не стесняйтесь указывать на то, что я делаю неправильно. Несмотря на это, у меня есть следующие операции в моей службе WCF:
[WebGet(UriTemplate = "/GetPropertyValue/{propertyID}", ResponseFormat = WebMessageFormat.Json)]
public string GetPropertyValue(string propertyID)
{
return RetrievePropertyValueFromDatabase(propertyID);
}
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public string SetPropertyValue(string propertyID, string propertyValue)
{
return SetPropertyValueInDatabase(propertyID, propertyValue);
}
Эти две операции вызываются моим приложением Silverlight Phone. Этот вызов должен использовать HttpWebRequest по соображениям производительности. Чтобы сделать этот звонок, вот что я делаю:
// Getting Property Value
string url = GetUrl(propertyID);
// url looks something like http://mydomain.com/myservice.svc/GetPropertyValue/2
WebRequest request = HttpWebRequest.Create(url);
request.BeginGetResponse(new AsyncCallback(GetProperty_Completed), request);
// Elsewhere in my code
// Setting property value
string url = GetUrl(propertyID, propertyValue);
// url looks something like http://mydomain.com/myservice.svc/SetPropertyValue/2/newValue
WebRequest request = HttpWebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.BeginGetResponse(new AsyncCallback(SetProperty_Completed), request);
Мои URL генерируются правильно. Однако работает только запрос GetProperty. Когда я копирую и вставляю URL-адрес GetProperty в браузер, он работает. Когда я пытаюсь выполнить SetProperty, я получаю сообщение об ошибке, сообщающее, что конечная точка не найдена. Я понимаю, что браузер всегда использует GET, так что это имело бы смысл. Но из HttpWebRequest я получаю сообщение об ошибке «Удаленный сервер возвратил ошибку: NotFound». Что я делаю не так?
Спасибо!