2015-01-22 2 views
3

Я хочу вернуться арабский текст с помощью asp.net веб-метод возвращается в виде JSON, Это код, я использую:Вернуться арабский текст с помощью ASP.NET 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); 
} 

Когда я запускаю веб метод сохраняет нагрузку без какого-либо ответа!

+0

попробуйте изменить статус на статический и вернуть переменную retJSON вместо использования контекста. – Quannt

+0

, пожалуйста, покажите, как вы называете этот веб-метод. – naveen

+0

@Quannt какой статус! и если я верну возврату переменную retJSON, она вернется как XML no JSON, так как мне нужно –

ответ

1

Вы не должны использовать WebMethod следующим образом. Изменить свою подпись:

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

Plus

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); 
+0

спасибо, я использовал «BinaryWrite», и он работал :) –

Смежные вопросы