Я использую следующий код JQuery \ JavaScript для связи со службой REST WCF 4.
<script>
var serviceUrl = "http://services.xiine.com/Xiine/Live/AccountService/rest/json/Login";
var userInfo = {
"IsNotEncrypted":true,
"Password":null,
"UserName":null
};
var loginSuccess = function(data, textStatus, jqXHR){
console.log("yay");
};
var loginError = function(){
console.log("oh no");
};
$.post(serviceUrl , userInfo, loginSuccess);
$.post(serviceUrl , loginSuccess);
</script>
Я пытаюсь установить, почему служба правильно возвращает ложное значение, когда я не передаю данные пользователя:
$.post(serviceUrl , loginSuccess);
В отличие от того, когда я передаю пользовательские данные, в этот момент выдается ошибка POST 400 (Bad Request).
$.post(serviceUrl , userInfo, loginSuccess);
Я уверен, что это связано с тем, как создается или интерпретируется объект JSON userInfo, и я могу опубликовать дампы Fiddler 2 или WireShark, если это поможет. Просто дай мне знать ...
На самом деле у меня нет доступа к изменению стороны службы WCF, так что, надеюсь, у меня есть кое-что, чтобы сделать эту работу.
Спасибо!
Редактировать
Я получил немного больше информации ... Судя по всему, проблема в том, что сервер отвечает следующей ошибкой:
Сервер обнаружил ошибку при обработке запроса. Сообщение об исключении: «Входящее сообщение> имеет неожиданный формат сообщения« Raw ». Ожидаемые форматы сообщений для операции: «Xml»,> «Json». Это может быть потому, что в привязке не настроен WebContentTypeMapper. См.> Документацию WebContentTypeMapper для получения более подробной информации. '. Смотрите журналы сервера для более подробной информации. Трассировка стека исключений:
в System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest (сообщение-сообщение, параметры Object []) в System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest (сообщение-сообщение, параметры Object []) в System.Formatisserter.Service.Service.Serserserver DeserializeRequest (сообщение сообщение, Object []) параметры на System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs (MessageRpc & RPC) в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin (MessageRpc & RPC) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5 (MessageRpc & rpc) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41 (MessageRpc & rpc) в System.ServiceModel.Dispatcher.MessageRpc.Process (логический isOperationContextSet)
Так что я думаю, мне нужно выяснить, как заставить объект проходить по проводам в виде объекта JSON с помощью метода JQuery.post ().
Дополнительная информация --- Снова ...
хорошо ... Нет app.config или web.config как такового.
Вот то, что я могу получить, что касается контрактов и кода, а что нет.
[ServiceContract]
public interface IAccount
{
[OperationContract]
bool Login(UserInformation user);
}
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class AccountService : IAccount
{
public bool Login(UserInformation user)
{
//stuff...
}
}
[DataContract]
public class UserInformation
{
[DataMember(IsRequired = true)]
public string UserName;
[DataMember(IsRequired = true)]
public string Password;
[DataMember(IsRequired = true)]
public bool IsNotEncrypted;
}
public interface IUserInformation
{
UserInformation UserInformation { get; set; }
}