Служба WCF с поддержкой Ajax в ASP.NET, как я могу «опубликовать» вместо «получить»? - PullRequest
0 голосов
/ 11 января 2010

Я использую простой сервис WCF с поддержкой ajax. Я создаю строку XML на клиенте и делаю get (по умолчанию). Вот код Я вижу атрибут «WebGet», но нет «WebPost»

  [OperationContract, WebGet(ResponseFormat = WebMessageFormat.Json)]
    public string PrepareDoc(string inputXML)
    {
        var arg = new CommandArg();
        arg.ParamCollection.Add("inputXML", inputXML);
        var result = LetterBLL.DoLetter(new PrepareDocCmd(), arg);


        return result.ScalarResult.ToString();
    }

Возвращает сериализованную строку, которую я могу проверить на клиенте. Это все работает хорошо. У меня действительно есть проблема, когда inputXML превышает максимальную длину IE Url 2048. Я получаю ошибку JavaScript, говоря, что ресурс недоступен. Решение, помимо уменьшения URL-адреса, заключается в переключении на POST. Как я могу это сделать? Также я должен отправлять JSON в службу вместо строки XML

На клиенте я регистрирую сервисную ссылку в диспетчере скриптов, чтобы он создавал прокси-объекты. Я звоню в сервис из JavaScript, как это. _prepareDoc ссылается на метод службы внутри объекта клиента.

 this._prepareDoc(sb.toString(), successFunc, failFunc, this);

Как мне изменить это, чтобы сделать пост? Также на сервере, что мне нужно изменить? В настоящее время я принимаю строку XML в качестве ввода.

Большое спасибо за любые советы, ~ ck в Сан-Диего

1 Ответ

3 голосов
/ 11 января 2010

А как же:

[OperationContract,
 WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...