Веб-служба отказывается получать параметры и отвечать в формате JSON

Я пытаюсь вызвать веб-службу (.asmx) из приложения c # в формате json.

Когда я указываю метод запроса как GET и не указываю contentType.

(req is HttpWebRequest)

req.Method = "GET";

Все работает хорошо, но я получаю ответ XML.
m пытается вызвать веб-службу (.asmx) из приложения c # в формате json. Когда я указываю метод запроса как GET и не указываю contentType. (req - это HttpWebRequest) req.Method = "GET" ...

Я пытаюсь вызвать веб-службу (.asmx) из приложения c # в формате json.

Когда я указываю метод запроса как GET и не указываю contentType.

(req is HttpWebRequest)

req.Method = "GET";

Все работает хорошо, но я получаю ответ XML.
m пытается вызвать веб-службу (.asmx) из приложения c # в формате json. Когда я указываю метод запроса как GET и не указываю contentType. (req - это HttpWebRequest) req.Method = "GET" ...

Я пытаюсь вызвать веб-службу (.asmx) из приложения c # в формате json.

Когда я указываю метод запроса как GET и не указываю contentType.

(req is HttpWebRequest)

req.Method = "GET";

Все работает хорошо, но я получаю ответ XML.
Когда я указываю Тип содержимого:

req.ContentType = "application/json; charset=utf-8";  

, я получаю внутреннюю ошибку сервера

500.

Когда я меняю метод запроса:

req.Method = "POST";  

Я могу вызывать только методы без параметров, которые правильно возвращают json, но если я попытаюсь вызвать метод с параметрами , я снова получаю ошибку 500.

Код веб-службы:

    [WebMethod(EnableSession =true)]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string SimplestWebService()
    {         
        return "hello";
    }  

И с параметрами:

    [WebMethod(EnableSession = true)]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string Echo(string aString)
    {       
        return aString;
    }

Мы будем очень благодарны за любые идеи.

Добавлено: Может я неправильно пишу POST-запрос (теперь отправляю его в заголовке, как GET-запрос). Кто-нибудь может помочь мне в этом?

Добавлен режим: Веб-сайт действительно отмечен как сценарий:

[ScriptService]
public class MyAPI : System.Web.Services.WebService  

И вот как я создаю свой POST-запрос (я действительно склонен полагать, что это проблема):

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(methodUrl.ToString());
req.Method = "POST";
req.Headers.Add("aString","oren");
req.ContentLength = 0;    
...
req.ContentType = "application/json; charset=utf-8";
req.Accept = "application/json; charset=utf-8";
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
  StreamReader sr = new StreamReader(res.GetResponseStream());
  result.Append(sr.ReadToEnd());
}  
...

Также пробовал:

req.Method = "POST";          
string postData = "aString=kjkjk";
req.ContentType = @"application/json; charset=utf-8";
req.Accept = @"application/json; charset=utf-8";   
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byte1 = encoding.GetBytes(postData);
req.ContentLength = byte1.Length;
Stream newStream = req.GetRequestStream();
newStream.Write(byte1, 0, byte1.Length);
newStream.Close();           

Две последние заметки:
1. Эта веб-служба работает в формате XML с использованием браузера.
2. При запросе json код никогда не достигает точки останова в веб-службе . Так что, возможно, это проблема IIS (я использую IIS 6.1). Я пробовал рекомендовать тип MIME здесь .

Большое спасибо.

5
задан Community 23 May 2017 в 12:28
поделиться