Размещение данных JSON в WCF REST - PullRequest
0 голосов
/ 02 июня 2010

Я пытаюсь отправить данные из клиентского приложения с помощью jQuery в службу REST WCF на основе начального набора WCF REST.

Вот что у меня есть.

Определение сервиса:

[WebHelp(Comment = "Save PropertyValues to the database")]        
[WebInvoke(Method = "POST", UriTemplate = "PropertyValues_Save",
           BodyStyle = WebMessageBodyStyle.WrappedRequest,
           RequestFormat = WebMessageFormat.Json,
           ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
public bool PropertyValues_Save(Guid assetId,
                                Dictionary<Guid, string> newValues) {
            // ...
}

Звонок от клиента:

$.ajax({
     url:SVC_PROPERTYVALUES_SAVE,
     type: "POST",
     contentType: "application/json; charset=utf-8",
     data: jsonData,
     dataType: "json",
    error: function(XMLHttpRequest, textStatus, errorThrown) {
     alert(textStatus + ' ' + errorThrown);
      },
     success: function(data) {
      if (data)  {
       alert('Values saved'); $("#confirmSubmit").dialog('close'); 
      }
      else {
       alert('Values failed to save'); $("#confirmSubmit").dialog('close');
      }      
     }
    });

Пример передаваемого JSON:

{
    "assetId": "d70714c3-e403-4cc5-b8a9-9713d05b2ee0",
    "newValues": [
        {
            "key": "bd01aa88-b48d-47c7-8d3f-eadf47a46680",
            "value": "0e9fdf34-2d12-4639-8d70-19b88e753ab1" 
        },
        {
            "key": "06e8eda2-a004-450e-90ab-64df357013cf",
            "value": "1d490aec-f40e-47d5-865c-07fe9624f955" 
        } 
    ] 
}

web.config

<?xml version="1.0"?>
<configuration>

     <configSections>

          <sectionGroup name="applicationSettings"
                        type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

          </sectionGroup>

     </configSections>

 <system.web>
  <compilation debug="true"/>
        </system.web>
 <system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
 </system.serviceModel>

     <appSettings>

         ...

     </appSettings>

</configuration>

Я использую аутентификацию Windows в виртуальном каталоге, и анонимный доступ отключен. Когда я вызываю операции, которые являются GET, все в порядке. Этот код побуждает браузер войти в систему. Когда я ввожу свои учетные данные, я просто получаю предупреждение в своем браузере, которое говорит: «ошибка не определена».

Даже если вы не можете помочь моей конкретной ошибке, вы видите что-то, что выглядит неправильно, глядя?

Я бьюсь об этом почти весь день.

Заранее спасибо.

1 Ответ

0 голосов
/ 02 июня 2010

Если у вас есть проблемы с аутентификацией, может быть важно убедиться, что только «Аутентификация Windows» включена, а «Анонимный» доступ - это переключатели в вашем виртуальном каталоге.

Если у вас нет проблем с каталогом irtual, вы должны опубликовать код вашего web.config файла.

Из вашего вопроса мне не ясно, есть ли у вас только проблемы с аутентификацией, или PropertyValues_Save не будет вызван с данными JSON, которые вы опубликовали. Не могли бы вы сформулировать это более четко?

ОБНОВЛЕНО : Мне кажется, что ваша программа будет работать, если клиент JavaScript будет использовать имена свойств «Ключ» и «Значение» вместо «ключ» и «значение».

Рекомендую также посмотреть в конце моего старого ответа. Как создать объект JSON для отправки в AJAX WebService? , чтобы убедиться, что вы правильно упаковали данные для вызова сервера.

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