2013-09-06 2 views
2

Я следовал инструкции о том, как создать ServiceStack здесь:ServiceStack - Выключить снимок

https://github.com/ServiceStack/ServiceStack/wiki/Create-your-first-webservice

Я уверен, что я последовал за ним к письму, но как только я запускаю веб заявление. Я получаю представление «Снимок» моего ответа. Я понимаю, что это происходит, когда у меня нет стандартного представления/веб-страницы. Я создал проект как веб-сайт ASP.net, а не веб-сайт ASP.net MVC. Может ли это быть проблема?

Snapshot

Я также написал приложение тест консоли со следующим C# код. Он получил ответ как HTML-страницу, а не как обычную строку, например. "Привет Джон".

static void sendHello() 
     { 
      string contents = "john"; 
      string url = "http://localhost:51450/hello/"; 

      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      request.Method = "POST"; 
      request.ContentLength = contents.Length; 
      request.ContentType = "application/x-www-form-urlencoded"; 

      // SEND TO WEBSERVICE 
      using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) 
      { 
       writer.Write(contents); 
      } 

      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

      string result = string.Empty; 

      using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
      { 
       result = reader.ReadToEnd(); 
      } 

      Console.WriteLine(result); 
     } 

Как отключить представление «моментальный снимок»? Что я делаю не так?

ответ

6

Браузер запрашивает html, поэтому ServiceStack возвращает html-снимок.

Есть несколько способов, чтобы остановить вид снимка:

  • Первый заключается в использовании ServiceClient классов, предоставляемых servicestack. Они также имеют преимущество в том, что они выполняют автоматическую маршрутизацию и сильно набирают ответы DTO.
  • Следующим способом было бы установить заголовок Accept запроса на что-то вроде application/json или application/xml, который сериализовал бы ответ в json или xml соответственно. Это то, что ServiceClients сделать внутренне
 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
    request.Accept = "application/json"; 
    ... 
  • Другой метод должен был бы добавить параметр строки запроса с именем format и установить его на json или xml
 
    string url = "http://localhost:51450/hello/?format=json"; 
+0

Это было Признание, которое я должен был установить. Я не могу поверить, что пропустил это. Спасибо! – jova85

1

Ввод определенного формата запрос является практическим способом для этого

string url = "http://localhost:51450/hello/?format=json"; 
+0

http: // localhost: 51450/hello.json еще короче :) – mythz

Смежные вопросы