Я нашел решение этой проблемы.
Этот сайт решил меня довольно много проблем раньше, поэтому я подумал, что было бы неплохо поделиться с вами.
Быстрый ответ на ваш вопрос:
string empty = context.Execute<string>(new Uri("Operation", UriKind.Relative)).FirstOrDefault();
«Пустая» строка должна быть нулевой или пустой при ответе. Он работает вокруг метода HttpWebRequest, упомянутого в посте выше.
Более того, можно также получить примитивных типов обратно, используя эту технику.
Допустим, у меня есть этот метод:
[WebGet]
public bool Authenticate(string Username, string Password)
{...do stuff here...}
Когда вы пытаетесь выполнить обычное выполнение, оно терпит неудачу (Витек Карас хорошо объясняет это в своем ответе выше):
var query = context.CreateQuery<bool>("Authenticate").AddQueryOption("Username", "'itye'").AddQueryOption("Password","'123456'");
DataServiceCollection<bool> list = new DataServiceCollection<bool>();
list.Load(query);
Но следующее поможет:
var query = context.CreateQuery<bool>("Authenticate").AddQueryOption("Username", "'itye'").AddQueryOption("Password","'123456'");
bool authenticated = context.Execute<bool>(new Uri(query.RequestUri.ToString().Replace("Authenticate()", "Authenticate"))).FirstOrDefault();
Обратите внимание на функцию Replace ("Authenticate ()", "Authenticate"), которая пропускает () в строке запроса (в противном случае это приведет к ошибке).
Надеюсь, это поможет.
- Itye