Проблема с форматом даты Json при вызове междоменного прокси - PullRequest
0 голосов
/ 27 апреля 2010

Я использую прокси-сервис, чтобы разрешить моему клиентскому javascript общаться со службой в другом домене

Прокси-файл - это простой Ashx-файл, который просто получает запрос и перенаправляет его в службу в другом домене:

using (var sr = new System.IO.StreamReader(context.Request.InputStream))
            {
                requestData = sr.ReadToEnd();
            }

            string data = HttpUtility.UrlDecode(requestData);

            using (var client = new WebClient())
            {
                client.BaseAddress = serviceUrl;
                client.Headers.Add("Content-Type", "application/json");

                response = client.UploadString(new Uri(webserviceUrl), data);
            }

Клиентский javascript, вызывающий этот прокси, выглядит следующим образом

function TestMethod() {

    $.ajax({
        type: "POST",
        url: "/custommodules/configuratorproxyservice.ashx?m=TestMethod",
        contentType: "application/json; charset=utf-8",
        data: JSON.parse('{"testObj":{"Name":"jo","Ref":"jones","LastModified":"\/Date(-62135596800000+0000)\/"}}'),
        dataType: "json",
        success: AjaxSucceeded,
        error: AjaxFailed
    });

    function AjaxSucceeded(result) {
        alert(result);
    }

    function AjaxFailed(result) {
        alert(result.status + ' - ' + result.statusText);
    }
}

Это прекрасно работает, пока мне не нужно пройти свидание. В этот момент я получаю ошибку Bad Request, когда прокси-сервер пытается вызвать службу. То есть, если я удалю ,"LastModified":"\/Date(-62135596800000+0000)\/" из данных json, то вызов будет успешным. Добавьте его обратно, и он потерпит неудачу.

Если я делаю вызов из того же домена, это нормально, но только когда он проходит через прокси, он терпит неудачу.

В какой-то момент это работало, но сейчас я его потерял.

Попытался использовать JSON.Parse для объекта перед отправкой. и JSON.Stringify, но не радость

У кого-нибудь есть идеи, что мне не хватает?

также пробовал настраиваемые методы парсера, упомянутые в этой статье 1021 ** -wind.com / Weblog / сообщения / * 896411.aspx 1022 ** * 1023

Есть идеи?

Ответы [ 3 ]

1 голос
/ 27 апреля 2010

Если вы размещаете данные, нужен ли вам UrlDecode? Если знак плюс доходит до UrlDecode как есть, я предполагаю, что он будет переведен в пробел, что может вызвать проблемы с форматом даты. Откуда именно вы получаете ошибку?

0 голосов
/ 27 апреля 2010

Ну, похоже, ваш аш не передает запрос / ответ прямо, верно? Это меняет это. Я не .net, и не знаю, что делает ваш код, но я бы сказал, что вы должны убедиться, что он работает как можно меньше. Еще одна вещь, на которую нужно обратить внимание при создании прокси-страницы, это то, отправляете ли вы ответ прямо или загружаете его в память в прокси-сервере перед тем, как начать отправку. Я считаю, что лучший способ сделать это - просто передать данные по мере их получения прокси-сервером.

0 голосов
/ 27 апреля 2010

получается, что эта строка не нужна

string data = HttpUtility.UrlDecode(requestData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...