httpResponse短一到两个字符

本文关键字:两个 字符 httpResponse | 更新日期: 2023-09-27 18:18:28

我正在写一个wcf webservice。它将主要集中在json和xml,但我需要一个字符串返回2种情况。

我正在设置测试:

 [OperationContract]
 [WebInvoke(Method = "GET",
      ResponseFormat = WebMessageFormat.Json,
      BodyStyle = WebMessageBodyStyle.Bare,
      UriTemplate = "test")]
  string BasicString();

我在欺骗响应,通过自己发送字符串返回,绕过标准的json返回。

   protected string BasicString()
   {
       string text = "ok";
       HttpResponse response = HttpContext.Current.Response;
       //response.AddHeader("Content-Length", "");
       response.ContentType = "text/html";
       //response.BufferOutput = true;
       response.Output.Write(text);
       //response.ContentEncoding = System.Text.Encoding.UTF8;
       response.End();
       return string.Empty;
   }

在大多数浏览器上返回"OK"。然而,在谷歌chrome和其他一些浏览器上,它需要最后一个字符。上面写着……"O"。我在本地IIS上运行它。

如果我把它放在托管的IIS上,它会返回"OK",有时会出现329编码错误。

在哪里我需要开始寻找它返回"OK"在所有情况下?

头吗?我已经尝试禁用上面的一些行,或者已经禁用了不同的值。

HTTP嗅探器给我以下内容:要求:

/服务/测试。svc/string HTTP/1.1 Host: localhost点火电极接受:text/html, application/xhtml + xml应用程序/xml; q = 0.9 /; q = 0.8用户代理:Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML,Chrome/27.0.1453.110 Safari/537.36gzip,deflate,sdch Accept-Language: en- us,en;

反应:

HTTP/1.1 200 OK Cache-Control: private Transfer-Encoding: chunked内容类型:text/html;charset=utf-8 Content-Encoding: gzip服务器:Microsoft-IIS/8.0 x - aspnet版本:4.0.30319X-Powered-By: ASP。NET日期:Sun, 16 june 2013 12:19:00 GMT

70��������I�%&/m�{J�J��t�� $ؐ@������搞笑#)*���前夕]f@�흼��{���{���,�N"���? ' fdl��我�ɞ!���? ~ | ?"���

httpResponse短一到两个字符

Carlos的注释引出了答案。

使用IO。流作为返回类型,而不是字符串。

[ServiceContract] public class RawService {
    [OperationContract, WebGet]
    public System.IO.Stream GetValue()
    {
        string result = "Hello world";
        byte[] resultBytes = Encoding.UTF8.GetBytes(result);
        return new MemoryStream(resultBytes);
    } }