JQuery WCF вызов мыла не удалось - PullRequest
3 голосов
/ 06 января 2011

Кто-нибудь знает, что я могу сделать вызов jquery мылом в службу wcf?

Мой код JQuery:

$.ajax({
    url: "http://localhost/oseop/orderingservice.svc/HelloWorld",
    data: $("#txtTestRequest").val(),
    type: "POST",
    processData: true,
    contentType: "application/xml; charset=utf-8",
    timeout: 10000,
    dataType: "xml",
    beforeSend: function (xhr) {
        xhr.setRequestHeader("SOAPAction", "HelloWorld");
    },
    success: function (xml) {
        console.log("Sucess");
        console.log(xml);
    },
    error: function (xhr) {
        console.log(xhr.statusText);
    }
});

Мои данные в txtTextRequest:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:49720/OrderingServices/OrderingService.svc</To>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://temp.org/test/IOrder/HelloWorld</Action>
  </s:Header>
  <soap:Body>
    <HelloWorld xmlns="http://temp.org/test/">
      <name>my name is earl</name>
    </HelloWorld>
  </soap:Body>
</soap:Envelope>

Мой код C #:

[ServiceContract(Namespace = "http://temp.org/test/")]
public interface IOrder
{
    [OperationContract]
    [WebInvoke(Method = "POST",
                 BodyStyle = WebMessageBodyStyle.Wrapped,
                 ResponseFormat = WebMessageFormat.Xml,
                 RequestFormat = WebMessageFormat.Xml)]

    string HelloWorld(string name);

}
[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public class OrderingService : IOrder
{
    public string HelloWorld(string name)
    {
        return String.Format("Hello {0}", name);
    }

}

Я получаю следующую ошибку от xhr.statusText:

необученное исключение: [Исключение ... «Компонент вернул код ошибки: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [NsIXMLHttpRequest.statusText]» nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE) "местоположение: "JS frame :: http://localhost:49758/TestClient/js/script.js :: аноним :: строка 22 "данные: нет]

Строка 0

Редактировать # 1:

Заголовки моего запроса:

OPTIONS http://localhost/oseop/orderingservice.svc/HelloWorld HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://localhost:49758
Access-Control-Request-Method: POST
Access-Control-Request-Headers: soapaction

Ответ:

HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Fri, 07 Jan 2011 14:00:53 GMT
Content-Length: 0

1 Ответ

0 голосов
/ 12 декабря 2011

Ознакомьтесь с документацией по API jQuery.ajax () . Там написано:

ошибка (jqXHR, textStatus, errorThrown)

Функция, вызываемая в случае сбоя запроса. Функция получает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строка, описывающая тип возникшей ошибки и необязательный объект исключения, если таковой произошел. Возможные значения для второго аргумента (кроме нуля): «timeout», «error», «abort» и «parsererror». При возникновении ошибки HTTP errorThrown получает текстовую часть состояния HTTP, например «Не найдено» или «Внутренняя ошибка сервера». Начиная с jQuery 1.5, установка ошибки может принимать массив функций. Каждая функция будет вызываться по очереди. Примечание. Этот обработчик не вызывается для междоменных сценариев и запросов JSONP. Это Ajax Event.

Ваша ошибка, вероятно, вызвана попыткой доступа к statusText, возможно, она не доступна. Попробуйте добавить два других аргумента в ваш код и проверить их содержимое.

Кроме того, какой браузер вы используете? Существуют некоторые поведенческие различия в способах обработки XmlHttpRequest между различными браузерами, поэтому использование его в более чем одном может иногда помочь в диагностике этих вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...