5

ここで ServiceStack を作成する方法については、次の手順に従いました。

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

私は文字どおりにそれに従ったと確信していますが、すぐに Web アプリケーションを実行します。応答の「スナップショット」ビューを取得します。これは、デフォルトのビュー/Web ページがない場合に発生することを理解しています。プロジェクトを ASP.net MVC Web サイトではなく、ASP.net Web サイトとして設定しました。それが問題でしょうか?

スナップショット

また、次の C# コードを使用してテスト コンソール アプリケーションを作成しました。「Hello, John」などのプレーンな文字列ではなく、HTML Web ページとして応答を受け取りました。

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);
        }

「スナップショット」ビューをオフにするにはどうすればよいですか? 私は何を間違っていますか?

4

3 に答える 3

8

ブラウザーは html を要求しているため、ServiceStack は html スナップショットを返しています。

スナップショット ビューを停止するには、いくつかの方法があります。

  • 1 つ目は、servicestack が提供するServiceClientクラスを使用することです。これらには、自動ルーティングを実行し、応答 DTO を厳密に型指定するという利点もあります。
  • 次の方法はAccept、リクエストのヘッダーを次のように設定するか、レスポンスをそれぞれjsonapplication/jsonまたはapplication/xmlxmlにシリアル化することです。これは ServiceClients が内部的に行うことです
    HttpWebRequest リクエスト = (HttpWebRequest)WebRequest.Create(url);
    request.Accept = "アプリケーション/json";
    ...
  • もう 1 つの方法は、というクエリ文字列パラメーターを追加して、またはformatに設定することです。jsonxml
    文字列 url = "http://localhost:51450/hello/?format=json";
于 2013-09-06T13:23:43.683 に答える
1

これを行うための実用的な方法は、特定のフォーマットを要求することです

string url = "http://localhost:51450/hello/?format=json";
于 2017-09-06T23:29:30.827 に答える