通过ASP.NET JSON返回阿拉伯语文本

时间:2015-01-22 10:34:13

标签: c# asp.net json arabic

我想通过asp.net web-method返回阿拉伯语文本作为JSON返回, 这是我正在使用的代码:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void getAr()
{
    ResultTemplate resultTemplate = new ResultTemplate();
    resultTemplate.data = "بسم الله";

    JavaScriptSerializer js = new JavaScriptSerializer();
    string retJSON = js.Serialize(resultTemplate);

    Context.Response.Clear();
    Context.Response.ContentType = "application/json";
    Context.Response.AddHeader("content-length", retJSON.Length.ToString());
    Context.Response.Flush();
    Context.Response.Write(retJSON);
}

当我运行web方法时,它会一直加载而没有任何响应!

1 个答案:

答案 0 :(得分:1)

你不应该像这样使用WebMethod。将其签名更改为:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getAr()
{
  string result;
  // fill it ...
  return result;
}

Response.Flush表示立即发送缓冲输出。所以你应该把它放在最后。

Context.Response.Write(retJSON);
Context.Response.Flush();

content-length也不等于string.Length。您应该将其转换为字节数组,然后使用其长度。

byte[] s = Encoding.UTF8.GetBytes(resultString);
response.AddHeader("Content-Length", s.Length.ToString());
response.BinaryWrite(s);