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��我�ɞ!���? ~ | ?"���
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);
} }