powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Проблема с методом POST при передаче JSON в WCF REST
10 сообщений из 10, страница 1 из 1
Проблема с методом POST при передаче JSON в WCF REST
    #38905476
Есть сервис:
Код: c#
1.
2.
3.
[OperationContract]
        [WebInvoke(UriTemplate = "/GetOrder/", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        string GetOrder(Orders[] order);


Описание данных:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
[DataContract]
    public class Orders
    {
        [DataMember(Order = 1)]
        public string product_id { get; set; }

        [DataMember(Order = 2)]
        public string product_name { get; set; }
    }


Код клиента:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<html>
<HEAD>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>

    <script type="text/javascript">
        
        var arrObjects = []; // объявление массива

        arrObjects[0] = {
            product_id: "1",
            product_name: "Апельсин"
        }
        arrObjects[1] = {
            product_id: "2",
            product_name: "Банан"
        }
        var a = JSON.stringify(arrObjects);

        jQuery.ajax({
            url: "http://localhost/mb_services/Service.svc/GetOrder/",
            dataType: "json",
          
        type: "POST",
        async: false,
        data: a,
        contentType: "application/json; charset=utf-8",
        dataFilter: function (data) { return data; },
        success: function (data) {
        },
        error: function (ex) {
            alert(ex.responseText);
        }
            
        });
</script>
</HEAD>

<BODY link=#FF0000 vlink=#FF0000 bgcolor=#FFFFFF>
    
</BODY>
</html>



При выполнении запроса возникает ошибка:
Код: html
1.
2.
Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
jquery-1.8.2.min.js:2 XMLHttpRequest cannot load http://localhost/mb_services/Service.svc/GetOrder/. Invalid HTTP status code 405 


Не могу понять, что я делаю не так.
По знаниям этой области я полный новичок, поэтому не исключаю, что причина ошибка банальна. Прошу помочь.
...
Рейтинг: 0 / 0
Проблема с методом POST при передаче JSON в WCF REST
    #38905726
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблема с методом POST при передаче JSON в WCF REST
    #38905830
Winnipuh, переделал все как в примере.
Сервис:
Код: c#
1.
2.
3.
4.
5.
6.
[OperationContract]
        [WebInvoke(Method = "POST",
                    RequestFormat = WebMessageFormat.Json,
                    ResponseFormat = WebMessageFormat.Json,
                    UriTemplate = "GetOrder/{id}")]
        string GetOrder(Orders order, string id);


Клиент:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
<html>
<HEAD>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script type="text/javascript">

        function doOrder() {
            var order = {
                "product_id": 0,
                "product_name": "WCF RESTful Service by Example"
            }

            $.ajax({
                type: "POST",
                url: "http://localhost/mb_services/Service.svc/GetOrder/0",
                data: JSON.stringify(order),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                processData: true,
                success: function (data, status, jqXHR) {
                    alert("success..." + data);
                },
                error: function (xhr) {
                    alert(xhr.responseText);
                }
            });
        }
</script>
</HEAD>

<BODY link=#FF0000 vlink=#FF0000 bgcolor=#FFFFFF>
   <button id="fdsf" onclick="doOrder()">Кнопочка</button>
</BODY>
</html>



Ошибка та же:
Код: plaintext
1.
2.
Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
1.htm:1 XMLHttpRequest cannot load  http://localhost/mb_services/Service.svc/GetOrder/0.  Invalid HTTP status code 405
jquery-1.8.2.min.js:2 OPTIONS  http://localhost/mb_services/Service.svc/GetOrder/0  
...
Рейтинг: 0 / 0
Проблема с методом POST при передаче JSON в WCF REST
    #38905848
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyVladimirovich,
HTTP Error 405 Method not allowed. Post method... Очевидно на данном web сервере стоит запрет на обращение к методу GetOrder через метод Post. Попробуйте Get.
...
Рейтинг: 0 / 0
Проблема с методом POST при передаче JSON в WCF REST
    #38905855
Axeleron, хотелось бы использовать POST. Отправлять json строку через заголовок не очень круто.
Отправляю содержимое web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>

<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="Services.IService">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="Services.Service" >
<endpoint binding="webHttpBinding" contract="Services.IService" behaviorConfiguration="webHttp" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp helpEnabled="true" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
Для просмотра корневого каталога веб-приложения во время отладки установите значение true.
Перед развертыванием установите значение false, чтобы избежать раскрытия сведений в папке веб-приложения.
-->
<directoryBrowse enabled="true"/>
<httpProtocol>
<customHeaders>
<!-- Enable Cross Domain AJAX calls -->
<remove name="Access-Control-Allow-Origin" />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
<connectionStrings>
<add name="mbusiness".....................>
</connectionStrings>
</configuration>
...
Рейтинг: 0 / 0
Проблема с методом POST при передаче JSON в WCF REST
    #38905862
Прошу прощения за корявую вставку кода. Не думал, что здесь нельзя редактировать посты.
...
Рейтинг: 0 / 0
Проблема с методом POST при передаче JSON в WCF REST
    #38905866
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyVladimirovich,
EnableCors выставлен в true на стороне сервера?
...
Рейтинг: 0 / 0
Проблема с методом POST при передаче JSON в WCF REST
    #38905885
Axeleron, нет.
Нужно что-то дописать к веб-сервису? Или это делается в web.config?
Можете подсказать на моем примере, что нужно добавить и в какое место.
Заранее благодарен.
...
Рейтинг: 0 / 0
Проблема с методом POST при передаче JSON в WCF REST
    #38905894
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyVladimirovich,
Посмотрите в разделе Enable CORS
...
Рейтинг: 0 / 0
Проблема с методом POST при передаче JSON в WCF REST
    #38925881
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyVladimirovich,

Почему обращение не по httpS ? Хотя он явно прописан. Для локальной отладки уберите securitymode
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Проблема с методом POST при передаче JSON в WCF REST
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]