我已按照有关如何在此处创建 ServiceStack 的说明进行操作:

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

我确定我已经完全按照它的意思去做了,但是一旦我运行了 Web 应用程序。我会看到我的回复的“快照” View 。我知道当我没有默认 View /网页时会发生这种情况。我将项目设置为 ASP.net 网站,而不是 ASP.net MVC 网站。这可能是问题吗?

我还使用以下 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);
        }

如何关闭“快照” View ?我究竟做错了什么?

最佳答案

浏览器正在请求 html,因此 ServiceStack 正在返回 html 快照。

有几种方法可以停止快照 View :

  • 首先是使用servicestack提供的ServiceClient类。这些还具有执行自动路由和强类型响应 DTO 的优点。
  • 下一个方法是将请求的 Accept header 设置为 application/jsonapplication/xml 之类的内容,这将分别将响应序列化为 json 或 xml。这是 ServiceClients 在内部做的事情

  • HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Accept = "应用程序/json";
    ...
  • 另一种方法是添加一个名为 format 的查询字符串参数并将其设置为 jsonxml

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

    关于ServiceStack - 关闭快照,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18653065/

    10-15 09:55